Как вывести последние комментарии с аватарами без плагинов и виджетов

Как вывести последние комментарии с аватарами без плагинов и виджетов | n-wp.ru Настройки
Пример кода, выводящего последние комментарии с аватарами. Этот код можно использовать для вывода комментариев в сайдбаре, не прибегая к дополнительным виджетам и плагинам.

Я стараюсь использовать плагины лишь в том случае, если задача, которую они выполняют, не решается тривиальными методами.Ну а виджеты вообще избегаю использовать. Это не значит, что я и вас призываю к этому, но мои принципы упрощения  говорят, что не следует плодить сущности без надобности. Ну хватит философии, переходим к делу. Насколько я знаю, сейчас WordPress не позволяет вот так вот запросто вывести последние комментарии с аватарами в любом месте одним нажатием кнопки или вставкой одной строчки кода. Давайте это поправим.

Чтобы вывести список последних комментариев, снабженных ссылками на эти комментарии и аватарами комментаторов, нужно сделать специальную функцию, которая это умеет. Для этого открываем functions.php и вставляем туда такой код:

comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC LIMIT ".$posts;
 
$comments = $wpdb->get_results($sql);
 
foreach ($comments as $comment) {
?>
<li>

<div class="info">
<a href="ID); ?>#comment-comment_ID; ?>" title=" post_title; ?>">
comment_author); ?>: com_excerpt); ?>...
</a>
<span class="meta"></span>
</div>
<div class="clear"></div>
</li>

Этот код создает функцию вывода последних пяти комментариев с длиной текста в 80 символов (остальные обрезаются многоточием …) и ссылками на комментарии. Нам осталось только вывести результаты деятельности этой функции в любом месте (обычно это сайдбар на главной странице sidebar.php):


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

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. Sonikelf

    Спасибо, очень пригодилось.
    Единственное, что не понял — чего за знаки вопроса в конце местами — http://clip2net.com/clip/m10803/1268157501-clip-4kb.jpg.

    Ответить
    1. Такие знаки вопроса (иногда квадратики) бывают, когда слово обрезается (ограничение на длину выводимого сообщения). Код простой, и он не умеет обрезать по концу слова, поэтому резет посредине — получаются непонятные символы. Чтобы не было таких символов, нужно использовать более серьезный плагин, например вот один из этих:
      https://n-wp.ru/kak-vyvesti-poslednie-otzyvy-recentcomments/
      https://n-wp.ru/wp-recentcomments/

      Ответить
    2. ataka

      Решение этой проблемы, чтобы правильно сократить текст.

      Добавьте
      $string = $comment->comment_content;
      $result = implode(array_slice(explode(‘
      ‘,wordwrap($string,60,’
      ‘,false)),0,1));

      Замените этот код:
      comment_content), 0, $comment_len)); ?>

      На этот код:

      Ответить
  2. zonzujiro

    Вставил ваш код в functions — сайт выдал ошибку и не открылся. А жаль :) Сам сторонник максимального облегчения ресурса.

    Ответить
    1. tiaurus

      Попробуйте другой способ вывода последних комментариев с аватарами и без плагинов: https://n-wp.ru/kak-vyvesti-poslednie-kommentarii-s-avatarami-bez-plaginov-i-vidzhetov-eshhe-odin-sposob/

      Ответить
  3. MikeKovalev

    Пусть комментарии посередине слова обрезаются, но можно хоть как-то знаки вопроса убрать?!

    Ответить
    1. Можно. Для этого в коде вместо substr нужно использовать mb_substr.

      Ответить
  4. MikeKovalev

    если ставлю mb_substr то выводится весь комментарий

    Ответить
  5. Sergey K.

    Здравствуйте!
    Воспользовался Вашим скриптом, всё работает прекрасно. Спасибо. Проблема только в одном. У меня комментарии сформированы постранично и ссылка, формирующаяся вот этим кодом: comment_post_ID ) . ‘#comment-‘ . $comment->comment_ID; ?>»>comment_author; ?>:
    получается без кусочка где указан номер страницы. То есть на выходе ссылка должна получится вот такая: http://sergeykorovin.ru/webtv/emigraciya-v-turciyu/comment-page-6#comment-1350. Подскажите пожалуйста, как сделать так, чтобы код прописал кусочек ссылки comment-page-6 в php. То есть, как выбрать номер страницы, очевидно из переменной WordPress, и как его вставить в Ваш скрипт?
    Нигде не могу найти решение этой проблемы…
    Заранее спасибо.

    Ответить
  6. Silvet

    В виджет попадают комментарии ещё не одобренные автором, это можно как-то исправить? И ещё, скажите, можно исключить комментарии автора?

    Ответить
  7. Сергей

    Здравствуйте. А как сделать ваш вывод комментариев древовидным?

    Ответить
    1. tiaurus автор

      Это невозможно. Последние комментарии появляются вне зависимости от степени вложенности родительских комментариев и вне зависимости от постов. Они отбираются по времени, а не по родителю. Родителями последних комментариев могут быть комментарии из разных постов.

      Ответить
  8. Сергей

    А вы бы не могли подсказать как к ним или рядом сними вывести комментарии и с форума bbpress?

    Ответить
    1. tiaurus автор

      Я не работал с bbPress, но применил бы для него удобное решение с помощью шорткода: bbPress Recent Replies Shortcode.

      Ответить
  9. эвакуатор спб дешево и быстро

    Спасибо за статью! Очень информативно и по делу…

    Ответить
  10. Эльмира

    Спасибо, а где же инфа про аватар?

    Ответить