Шаблон комментариев WordPress

Недавно копался в файлах своей темы WordPress, а именно правил шаблон вывода комментариев, попутно разбираясь в его устройстве и различных функциях, ответственных за вывод комментариев на постах блога. В результате я изменил стандартный вывод, создал и подключил свой собственный файл comments.php. Полученный результат решил оформить в виде статьи, так как хорошо разобрался в этой теме, и материала получилось довольно много.

Надеюсь что статья окажется полезной для владельцев блогов на WordPress, знакомых с HTML, CSS и PHP.

***

В WordPress для подключения шаблона комментариев на пост или страницу используется функция comments_template(), которая принимает в себя два параметра:

  • первый — путь к файлу шаблона, по умолчанию это comments.php в папке с текущей темой
  • второй служит для разделения комментариев по типу (обычные, трекбэки и пингбэки), по умолчанию false

Вставим comments_template() после вывода записи в шаблон поста single.php или страницы page.php.

<?php while (have_posts()) : the_post(); ?>
  <?php comments_template(); ?>
<?php endwhile; ?>

Описание и принимаемые аргументы функции comments_template() и других упоминаемых в статье ищите в Кодексе WordPress.

Подготовка шаблона

Давайте попробуем разобраться в шаблонах комментариев WP и собственноручно сделаем файл для вывода комментариев на посты и страницы блога. В качестве примеров для ознакомления можно взять шаблоны из стандартных тем WordPress. Создадим новый документ в любом текстовом редакторе, назовем его comments.php и начнем редактировать.

  • В принципе назвать файл можно как угодно, а после в comments_template() прописать путь к этому файлу, однако лучше придерживаться стандартного названия
  • Редактировать файл можно и в админке WP, кстати
  • Лучше всего конечно писать код и сразу проверять его действие на своем блоге или на локальном сервере.

В WordPress возможно запретить комментарии для отдельных постов, поэтому перед их выводом нужно произвести проверку на «открытость»:

<?php if (comments_open()) { ?>
  <!-- здесь дальнейший код -->
<?php } else { ?>
  <h3>Обсуждения закрыты для данной страницы</h3>
<?php } ?>

Это код-обертка для наших дальнейших действий. Теперь подготовим контейнер для блока комментариев <div> с семантически корректным классом или идентификатором (класс конечно предпочтительнее):

<div class="wrap-comments">
  <!-- тут будет ваш код -->
</div>

Внутри <div> пропишем заголовок, чтобы вашим читателям было понятно, что здесь находятся комментарии и ничто другое, тег <h3> будет для этого в самый раз:

<h3>Комментарии читателей к статье "<?php the_title(); ?>"</h3>

Здесь мы указали одну из функций WordPress — the_title(), результатом выполнения этой функции станет вывод заголовка текущего поста или страницы. Если вы не хотите выводить заголовок, то можно написать просто «Комментарии читателей».

Далее, перед тем как выводить комментарии, нужно удостовериться в их наличии, т.е. произвести проверку, если есть — вывести полный список, если нет — то можно показать пользователю что-то наподобие «Комментариев пока нет, но вы можете стать первым». Так посетителю вашего поста/страницы будет понятно, что никто еще ничего не писал, а мотивирующая фраза «Вы можете быть первым» увеличит вероятность того, что вам быстрее что-нибудь напишут.

Итак, после такой постановки задачи становится ясно, что для реализации нам понадобятся конструкции if/else и функция вывода количества комментариев get_comments_number(). Если функция возвращает 0 (ноль), то выводим «Комментариев пока нет…», иначе «Комментарии читателей…»:

<?php 
  if (comments_open()) {
    if (get_comments_number() == 0) { ?>
      <h3>Комментариев пока нет, но вы можете стать первым</h3>
    <?php } else { ?>
      <div class="wrap-comments">
        <h3>Комментарии читателей к статье "<?php the_title(); ?>"</h3>
        <!-- далее кодим здесь -->
     </div>
    <?php } 
  } else { ?>
    <h3>Обсуждения закрыты для данной страницы</h3>
  <?php } 
?>

Вывод комментариев

Отлично, мы вывели заголовки в зависимости от наличия или отсутствия комментариев, теперь логично вывести сами комментарии — за это отвечает функция wp_list_comments(). Функция по умолчанию заключает все комментарии в теги <li>, поэтому следует добавить обертку <ol> с присвоением класса .commentlist:

<ol class="commentlist">
  <?php wp_list_comments(); ?>
</ol>

wp_list_comments() принимает в себя массив аргументов, с помощью которых можно гибко настроить вывод комментариев. Например можно изменить размер аватара, текст ответа на комментарий и другие настройки, передав ключевое слово и значение:

$args = array(
  'avatar_size' => 64, // размер аватара 64*64px, по умолчанию 32
  'reply_text' => 'Ответить' // текст ответа на комментарий
  'callback' => 'my_comments' // функция формирования внешнего вида комментария
)

Отдельного рассмотрения заслуживает параметр callback, который принимает значение имени пользовательской функции вывода комментария. С ее помощью можно гибко настроить внешний вид каждого комментария. Вот так выглядит стандартная функция вывода из файла comment-template.php:

<?php
  // стандартный вывод комментариев
  function mytheme_comment($comment, $args, $depth){
    $GLOBALS['comment'] = $comment; ?>
      <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
        <div id="comment-<?php comment_ID(); ?>">
          <div class="comment-author vcard">
            <?php echo get_avatar($comment,$size='48',$default='<path_to_url>' ); ?>
 
            <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
          </div>
          <?php if ($comment->comment_approved == '0') : ?>
            <em><?php _e('Your comment is awaiting moderation.') ?></em>
            <br />
          <?php endif; ?>
 
          <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
 
          <?php comment_text() ?>

          <div class="reply">
            <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
          </div>
        </div>
  <?php }
?>

Проще всего взять данную функцию и править ее под себя, а потом вызвать как пользовательскую, прописав ее в файле comments.php или functions.php.

После вывода списка комментариев можно изменять их внешний вид через стили CSS. Некоторые параметры wp_list_comments() дублируются в админке WP, вкладка Параметры → Обсуждение, в частности наличие древовидных комментариев, сортировка по дате и т.п.

Форма отправки комментария

Для добавления формы комментариев используется функция comment_form(). Добавим ее под список комментариев:

<?php 
  if (comments_open()) {
    if (get_comments_number() == 0) { ?>
      <h3>Комментариев пока нет, но вы можете стать первым</h3>
    <?php } else { ?>
      <div class="wrap-comments">
        <h3>Комментарии читателей к статье "<?php the_title(); ?>"</h3>
        <ol class="commentlist">
          <li>
          	<?php
                  function my_comments() {
                   /* здесь код пользовательской функции */
                  }               
        	  $args = array(
        	    'avatar_size' => 64,
        	    'reply_text' => 'Ответить',
                    'callback' => 'my_comments'
        	  );
        	  wp_list_comments($args);
        	?>
          </li>
        </ol>
        <?php comment_form(); ?>
     </div>
    <?php }
  } else { ?>
    <h3>Обсуждения закрыты для данной страницы</h3>
  <?php } 
?>

При таком вызове comment_form() загрузит стандартный код из файла WordPress comment-template.php. Функция принимает в себя два параметра:

comment_form($args, $post_id);
  • $args — массив настроек вывода формы
  • $post_id — id поста, к которому будет применена функция, по умолчанию текущий пост

Давайте к примеру сделаем валидацию на HTML5 полям формы, добавим текстовые подсказки. Создадим массив $args для ввода нужных настроек:

$args = array();
comment_form($args);

В массив необходимо прописать ключи настроек:

$args = array(
  'fields' => apply_filters('comment_form_default_fields', $fields)
);

Теперь нам необходимо заполнить переменную-массив $fields, которая включает в себя поля формы. Проще всего взять стандартный код WordPress из comment-template.php и немного его изменить:

<?php
  // код из comment-template.php, для тех кто немного знаком с PHP, без труда его разберет
  $fields = array(
    'author' => '<p class="comment-form-author"><label for="author">' . __( 'Name' ) . '</label> ' . ($req ? '<span class="required">*</span>' : '') . '<input id="author" name="author" type="text" value="' . esc_attr($commenter['comment_author']) . '" size="30"' . $aria_req . '/></p>',
    'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ($req ? '<span class="required">*</span>' : '') . '<input id="email" name="email" type="text" value="' . esc_attr($commenter['comment_author_email']) . '" size="30"' . $aria_req . '/></p>',
    'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' . '<input id="url" name="url" type="text" value="' . esc_attr($commenter['comment_author_url']) . '" size="30"/></p>'
  );
  $args = array(
    'fields' => apply_filters('comment_form_default_fields', $fields)
  );
  comment_form($args);
?>

Здесь значения параметров author, email и url — html-код полей «Имя», «Почта» и «Сайт соответственно. Эти значения необходимо отредактировать.

Для полей нам нужно добавить следующие атрибуты:

  • required — делает поля обязательным для заполнения, добавляем его для полей «Имя» и «Сайт»
  • placeholder — добавляет текстовую подсказку в поле
  • pattern="[A-Za-zА-Яа-я]{3,}" для поля «Имя» — указываем имя буквами латинского или русского алфавита и длину не менее 3 символов
  • type="email" для поля «Почта» — тем самым мы добавим валидацию HTML5 электронной почты
  • autocomplete — включает автозаполнение для полей
  • type="url" для поля «Сайт»

Не забудьте, что в старых браузерах новые атрибуты HTML5 работать не будут. Те браузеры, которые не понимают новые типы полей, будут просто выводить их как текстовые, т.е. <input type="text">.

Вдобавок я для своего блога кое-где поменял местами теги, добавил классы для стилизации, в результате у меня получился такой код массива $fields:

<?php 
  $fields = array(
    'author' => '<p class="comment-form-author"><label for="author">' . __( 'Name' ) . ($req ? '<span class="required">*</span>' : '') . '</label><input type="text" id="author" name="author" class="author" value="' . esc_attr($commenter['comment_author']) . '" placeholder="Иван" pattern="[A-Za-zА-Яа-я]{3,}" maxlength="30" autocomplete="on" tabindex="1" required' . $aria_req . '></p>',
    'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email') . ($req ? '<span class="required">*</span>' : '') . '</label><input type="email" id="email" name="email" class="email" value="' . esc_attr($commenter['comment_author_email']) . '" placeholder="example@example.com" maxlength="30" autocomplete="on" tabindex="2" required' . $aria_req . '></p>',
    'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label><input type="url" id="url" name="url" class="site" value="' . esc_attr($commenter['comment_author_url']) . '" placeholder="www.example.com" maxlength="30" tabindex="3" autocomplete="on"></p>'
  );
?>

Мы изменили поля ввода данных. Теперь подредактируем саму форму комментариев <textarea>. Код формы изменяем с помощью параметра comment_field массива $args:

<?php
  'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" class="comment-form" cols="45" rows="8" aria-required="true" placeholder="Текст сообщения..."></textarea></p>'
?>

Это стандартный код WordPress, я лишь немного видоизменил его — добавил текстовую подсказку и прописал дополнительный класс для стилизации.

Вот что я в итоге получил с применением стилей CSS:

Форма комментариев WordPress
Форма комментариев WordPress с использованием атрибутов HTML5

Итог

Напоследок скину свой получившийся код comments.php:

<?php if (comments_open()) { ?>
  <h3 class="comments-caption"><a name="comments"><?php comments_number('Комментарии', '1 комментарий', '% комментариев'); ?> читателей статьи "<?php the_title();?>"</a></h3>
    <?php if (get_comments_number() == 0) { ?>
      <ul class="list">
        <li>Оставьте первый комментарий - автор старался</li>
      </ul>
    <?php } else { ?>
    <ol class="commentlist">
      <?php
        function verstaka_comment($comment, $args, $depth){
          $GLOBALS['comment'] = $comment; ?>
          <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
            <div id="comment-<?php comment_ID(); ?>">
              <div class="comment-author vcard">
                <div class="comment-meta commentmetadata" style="float: right;">
                  <span><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></span>
                </div>
                <?php echo get_avatar($comment,$size='74',$default='<path_to_url>' ); ?>
                <?php printf(__('@<cite class="fn">%s</cite> <span class="says">пишет:</span>'), get_comment_author_link()) ?>
              </div>
              <?php if ($comment->comment_approved == '0') : ?>
                <em><?php _e('Your comment is awaiting moderation.') ?></em>
                <br>
              <?php endif; ?>
              <?php comment_text() ?>
              <div class="reply">
                <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
              </div>
            </div>
      <?php }
        $args = array(
          'reply_text' => 'Ответить',
          'callback' => 'verstaka_comment'
        );
        wp_list_comments($args);
      ?>
    </ol>
  <?php } ?>

  <?php
    $fields = array(
      'author' => '<p class="comment-form-author"><label for="author">' . __( 'Name' ) . ($req ? '<span class="required">*</span>' : '') . '</label><input type="text" id="author" name="author" class="author" value="' . esc_attr($commenter['comment_author']) . '" placeholder="" pattern="[A-Za-zА-Яа-я]{3,}" maxlength="30" autocomplete="on" tabindex="1" required' . $aria_req . '></p>',
      'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email') . ($req ? '<span class="required">*</span>' : '') . '</label><input type="email" id="email" name="email" class="email" value="' . esc_attr($commenter['comment_author_email']) . '" placeholder="example@example.com" maxlength="30" autocomplete="on" tabindex="2" required' . $aria_req . '></p>',
      'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label><input type="url" id="url" name="url" class="site" value="' . esc_attr($commenter['comment_author_url']) . '" placeholder="www.example.com" maxlength="30" tabindex="3" autocomplete="on"></p>'
    );

    $args = array(
      'comment_notes_after' => '',
      'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" class="comment-form" cols="45" rows="8" aria-required="true" placeholder="Текст сообщения..."></textarea></p>',
      'label_submit' => 'Отправить',
      'fields' => apply_filters('comment_form_default_fields', $fields)
    );
    comment_form($args);
  ?>
  <?php } else { ?>
  <h3>Обсуждения закрыты для данной страницы</h3>
  <?php }
?>

FAQ по комментариям

Как выделить комментарии автора и пользователя?

Иногда бывает очень удобно задать отдельный внешний вид для авторских комментариев, для этого есть даже специальные плагины. Однако можно обойтись без всяких плагинов — просто прописав стили для класса .bypostauthor в css-файле. Аналогично можно задать стили для пользовательских комментариев — .bypostuser:

.commentlist .bypostauthor {
  /* авторские стили */
}
.commentlist .bypostuser {
  /* пользовательские стили */
}

Как задать стили для древовидных комментариев?

Для включения древовидных комментариев нужно зайти в админку WP, Параметры → Обсуждение → Разрешить древовидные комментарии. Теперь дочерние комментарии будут иметь древовидную структуру, им можно задать отдельные стили, например сделать отступы. Все что нужно — установить правила в css для списка с классом .children:

.commentlist .children {
  padding: 0 0 0 40px; /* отступ слева для дочерних комментариев */
}

Стили для четных и нечетных комментариев

WordPress по умолчанию дает нечетным комментариям класс .even, четным .odd. Через эти классы легко задавать свои стили:

.commentlist .even {
  /* стили для нечетных комментариев */
}
.commentlist .odd {
  /* стили для четных комментариев */
}

Как закрыть комментарии на отдельном посте?

Очень легко — заходим на страницу написания поста, Настройки экрана → Обсуждения, под полем поста появляется блок Обсуждения, снять выделение пункта Разрешить комментарии.

Еще советы

  • При составлении собственного шаблона комментариев можно пользоваться файлами comments.php из стандартных и других платных и бесплатных тем WordPress
  • Альтернатива стандартным комментариям — сторонние плагины форм комментирования, например популярная DISQUS
  • Вполне возможно править код прямо в самом файле comment-template.php, однако в случае обновления WordPress весь код будет перезаписан — придется править снова
  • Помните — идеального шаблона комментариев не бывает

Рейтинг статьи

Похожие статьи

Комментарии читателей

  1. Супер урок, спасибо большое)

  2. Добрый день! А как лучше реализовать согласие комментатора на обработку персональных данных? Вроде собираются за отсутствие такой штуки штрафовать владельцев сайтов.

  3. Добрый день! Прекрасная статья, но возник вопрос, как дополнить форму комментариев «галочкой» о согласии пользователя на обработку персональных данных? Вроде введен новый штраф с владельцев сайта, если нет такого согласия. Дело в том, что ФИО и электронная почта в совокупности уже считаются персональными данными человека.

  4. Роман:

    Лучшая статья! Красавчик!!

  5. Марина:

    Здравствуйте!

    Подскажите, почему при запрете комментариев стандартными функциями Вордпресс правый сайдбар съезжает вниз, а левый, вообще, исчезает под футером. Если рассматривать код страницы, то видно, что исчезает код вывода формы для добавления комментариев, при этом от него остается 6 лишних закрывающих дивов.

    • Добрый день, очевидно, что где-то либо остается открытый див, либо див закрывается не там, где нужно. Пройдитесь валидатором по странице, исправьте ошибки в разметке.

  6. Женя:

    Здорово :))))))

  7. Ричард:

    Большой спасибо за статью!

  8. Артем:

    Почему не работает данное условие ??

    comment_approved == ‘0’) : ?>

    Сделал шаблон по Вашему примеру , но когда оставляю комментарий , то не срабатывает это условие , не выводится на экрана данное сообщение.
    В чем может быть проблема ?

  9. Я не могу изменить ширину ставлю 500 и бестолку ширина не меняется Что можно сделать?

  10. Все хорошо в шаблоне, но вот столкнулся с такой проблемой. Когда комментариев в записи еще нет и публикуешь первый, то страница перезагружается, но новый комментарий не отображается. При этом в адрес страницы добавляется id комментария, но переход к нему как к якорю не осуществляется, так как по сути переходить не к чему.
    Если же комментарии к записи есть, то комментарий публикуется, к нему осуществляется переход по якорю и пишется текст о том, что он ожидает модерации.
    Вероятно, что что-то не так с функцией, но я не будучи программистом не могу понять что именно.

    Вадим, наблюдали ли вы подобную проблему и как ее решить?
    Благодарю!

    • Нашел причину. Она в том, что код вывода комментариев у нас обернут в условие «если комментариев ==0, то выводить…»
      Поэтому, когда публикуем первый комментарий, скрипт, опрашивая количество видит, что их пока 0. А 0 их потому, что нет ни одного одобренного. Стоит удалить код условия проверки, как сразу все нормализуется. Однако же этот код нужен в плане мотивационной составляющей.

      Давайте вместе думать, как сделать так, чтобы и овцы были целы и волки сыты?!

  11. Виталий:

    Спасибо друг, очень помог

  12. Хорошая статья, но больше я люблю пользоваться комментариями от вк, т.к. их сложнее накрутить, по этому у людей больше доверия к такой форме коменнтов)) Хотя я может быть и не прав)

  13. Спасибо за статью, очень помогли! Но есть один момент — почему-то не отображаются заглушки аватаров комментаторов, а мой как автора отображается, т.к я его установил в gravatar. Подскажите, как можно это исправить. Адрес с сайта указал в форме комментирования здесь.

  14. Константин:

    Огромное спасибо! Благодаря Вашей статье сделал страницу комментариев так как мне нужно было!

  15. Здравствуйте! У меня после обновления до 4.3.1. перестали отображаться форма и комментарии к записям, только к страницам, хотя в админке их посмотреть можно. Не подскажете, что можно сделать?

  16. Игорь:

    после отправки комментария возникают какие то проблемы с кодировкой (смотрите скрин). После обновления страницы проблема исчезает. Не подскажите в чем может быть дель?
    f6.s.qip.ru/n037PH2r.png

  17. Здравствуйте, гуру цсс, пи-аш-пи и других языков сайтотворения.
    Суть вопроса в следующем: Есть сайт, на движке WP в котором есть страничка вопросов и ответов, которая со временем превратилась в рулон обоев. Удалять жалко- это все-таки контент, но при поиске, поисковик выводит не на текст (якорь), а в верхнюю часть страницы.
    Пока я нашел два вида решений:
    1 каким-то боком привязать якоря к теме поисковой фразы.
    2 внедрить в шаблон комментариев слайдер таким образом, чтоб он скрывал ответы, а оставлял только первые строчки вопроса. Таким образом, на мой взгляд, будет легче находить нужную инфу
    Собственно и прошу помощи какой код и куда именно вставлять
    п.с. я самоучка, поэтому может вопрос и глупый.
    Страничка вот:
    http://www.elektrik-kiev.com/voprosy-elektriku/

  18. Алексей:

    подскажите как форму для сообщения поднять выше формы ввода имени и мейла?

    • Залить код в functions.php, указанный по ссылке

      • Алексей:

        а нельзя ли как нибудь поменять местами в этой части кода » . __( ‘Name’ ) . ($req ? ‘*’ : ») . »,
        ’email’ => » . __( ‘Email’) . ($req ? ‘*’ : ») . »,
        ‘url’ => » . __( ‘Website’ ) . »
        );

        $args = array(
        ‘comment_notes_after’ => »,
        ‘comment_field’ => » . _x( ‘Comment’, ‘noun’ ) . »,
        ‘label_submit’ => ‘Отправить’,
        ‘fields’ => apply_filters(‘comment_form_default_fields’, $fields)
        );
        comment_form($args);
        ?>

  19. Рита:

    Очень подробная статья. Спасибо.
    Вот может кто подскажет, как сделать кнопку в форме отправки комментария button, а не input как сейчас.

  20. Хочу еще кое-что добавить в функцию custom_validate_comment_author().

    Дело в том, что в ней нету проверки авторизован ли пользователь. Если он авторизован, то поле имя не будет выводиться, НО проверяться БУДЕТ. При отправке комментария авторизованому пользователю будет выдано сообщение «Ошибка! Пожалуйста, заполните поле Имя».

    Добавил проверку:

    function custom_validate_comment_author() {
    if ( !is_user_logged_in() )
    {
    if( empty( $_POST['author'] ) || ( !preg_match( '/[^\s]/', $_POST['author'] ) ) )
    wp_die( __('Ошибка! Пожалуйста, заполните поле Имя') );
    }
    }

    Скрин того, что я имею ввиду: http://dl2.joxi.net/drive/0006/2333/411933/141201/753fda0b78.png

  21. Светлана:

    Вадим, добрый день!
    У меня возникла проблема с внешним видом формы комментариев. Форму комментарии я изменила, а вот где изменить кнопки «Preview и Post», на «предпросмотр и отправить» я найти не могу :( Может вы мне сможете подсказать. Как то не очень красиво смотрится на сайте. Спасибо.

  22. Спасибо за статью, очень помогла.

  23. Tit:

    Я там изменил все в файл comments.php но не получился. Не знаю почему так. Скажите мне пожалуйста,какая путь файла комментирования надо изменить?

  24. Ольга:

    Здравствуйте! у меня в шаблоне под статьями комментарии свернуты (просто указано их число, а чтобы посмотреть, нужно кликать по ссылки и тогда только они выводятся при перезагрузке страницы). Помогите, пожалуйста, что надо написать в этом файле, чтобы они были сразу развернутые??

  25. Отличная статья, еще не встречал чтобы так подробно и понятно была расскрыта тема шалона комментариев для WP.

  26. Оксана:

    Здравствуйте, Вадим! После обновления версии WordPress «потерялась» форма комментариев. В файле single.php все прописано, но выходит ошибка Fatal error: Call to undefined function st_related_posts. Не подскажете, в чем причина?

  27. благодарю за подробную статью.

  28. Спасибо. Пригодилось для моего блога

  29. Юрий, введите в поисковике:

    comments_link(); и будет вам решение

  30. Юрий:

    А как изменить место расположение самой ссылки «добавить коммент.» К примеру, если она находится сверху, а я хочу поставить в определённое место под анонсом статьи?

  31. Вадим, это пожалуй лучший пост на тему комментариев. Как раз делаю их на клиентском сайте и возникли некоторые проблемы. А ваш пост помог разобраться.

    Я бы добавил в код вот это:

    Комментарии

    а то 2 заголовка отображаются, не очень красиво. А так, если есть комменты, то пишем это, если нет, то призываем стать первым комментирующим.

    И еще в записи не хватает ссылки на кодекс http://codex.wordpress.org/Function_Reference/comment_form, где дается описание функций формы.

    Например, с помощью двух таких функций, я изменил заголовок формы.
    ‘title_reply’ => ‘Присоединяйтесь к обсуждению!’,
    ‘title_reply_to’ => ‘Ответ на комментарий %s’,

    Единственный недостаток такого добавления формы — неполная гибкость. например, код функции подписки на комментарии не добавишь между textarea и submit. А так все хорошо.

    Подписываюсь на ваш блог. Часто попадается в выдаче и пишите хорошо :-)
    Удачи!

    • Стас:

      Блин голову сломал пока искал как изменить надпись на кнопке отправки комментария, помогли, спасибо!

  32. Огромное спасибо за статью! Все подробно и доступно написано:) Со стилями немного пришлось поработать.

  33. Здравствуйте! Может, вы знаете как мне помочь? Я несколько дней назад зарегилась на бирже ссылок LinkFeed и на один из моих сайтов поступили заявки разместить ссылку в фиде комментариев к статьям, т. е. здесь, например: http://za-stolom.ru/salat-iz-gribov-so-smetanoy/feed/
    Но после размещения появляется ошибка: «ссылка вне тега body». Как сделать так, чтобы их бот видел тег в RSS комментариях?

  34. Все сделал! Не могли бы вы написать мне стили как у вас? мой ящик ivanovsru@gmail.com И да спасибо за статью все очень понятно и грамотно написано.

  35. Здравствуйте! У меня не выводятся сам блок комментария прошу помочь. Ссылка http://pcstok.ru/kak-vybrat-antivirus.html во вкладке WordPress.

  36. Здравствуйте, Вадим. У меня на сайте (WordPress) возникла проблема: посетители оставляют комментарии к одной записи, а при прочтении оказывается, что данный комментарий располагается под другой записью.
    Или под только что опубликованной записью сразу же появляются комментарии, оставленные ранее к какой-либо другой статье.
    Не подскажите, в чем может быть проблема? Какая часть кода в файлах comments.php или functions.php или где-то еще отвечает за правильный вывод комментариев?

    • Добрый день, Анатолий!
      Честно говоря, не могу сказать навскидку, в чем причина. Пришлите мне файлы functions.php и comments.php — я посмотрю

  37. Спасибо Вам за статью!

  38. Наталья:

    Вадим, здравствуйте. Может Вы мне поможете? В моем шаблоне не работает блок коментов. После отправки комментария появляется полностью пустой экран. При этом в адресной строке браузера отображается http://мойсайт.ru/wp-comments-post.php В чем может быть причина? Спасибо.

    • Здравствуйте, Наталья! А вы мой файлик подгружаете? Я думаю, что где-то просто закралась ошибка. Пришлите мне пожалуйста код на почту, я посмотрю.

      • Наталья:

        Вадим, спасибо большое. С Вашей помощью нашла решение проблемы. Все дело было в плагине «Aprove only russian comments» — отключила его и все.

  39. ivan:

    Здравствуйте!
    Помогите решить проблему! Я все сделал все получилось! Проблема в том что мне надо отрубить правильность правописания url! Ввожу сайт в поле он пишет напиши URL хоть убейся! Как отключить эту проверку чтоб можно было любое слово вписать и он схавал как говорится?))

  40. Что-то у меня на сайте не так красиво вышло, как у Вас…( И кажется что-то происходит с сайтом, может и не по причине вставки кода, но ломается…

    • Вера, для изменения внешнего вида необходимо воспользоваться стилями CSS. А насчет поломки — вы правильно вставляете код?

  41. Не могли бы вы выделить жирным, что у callback функции должны быть аргументы ($comment, $args, $depth)? Я 3 часа сижу, ищу ошибку, а оказывается она была только в этом. Спасибо))

  42. Эдуард:

    Спасибо большое Вадим за подробное описание…

  43. Эдуард:

    Установил файл comments.php которого не было в теме, и получилось не пойму что, как будто какой-то другой файл мешает нормальному отображения комментарий. Не посмотрите?

  44. Спасибо большое за статью, сейчас как раз начал изучать wordpress, в плане верски и привязки шаблона, и ваш пост оказался как никогда кстати. Добавил блог в закладки, буду следить за выходом новых публикаций!!!

  45. Огромное спасибо! Данная статья помогла разобраться и сделать так, как мне хотелось :)

  46. Здравствуйте, большое спасибо вам за статью, вы меня здорово выручили.

Добавить комментарий