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

Пример кода, выводящего последние комментарии с аватарами. Этот код можно использовать для вывода комментариев в сайдбаре, не прибегая к дополнительным виджетам и плагинам.

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

tiaurus-2010-01-21_195909

Пример кода, выводящего последние комментарии с аватарами. Этот код можно использовать для вывода комментариев в сайдбаре, не прибегая к дополнительным виджетам и плагинам.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function dp_recent_comments() {
    $comment_len = 80;
    $comments = get_comments('number=6');
    if ($comments) {
        foreach ($comments as $comment) {
            //ob_start();
            ?>
                <li>
                 
                    <div style="float: left;"><?php echo get_avatar($comment,$size='40' ); ?></div>
                    <a href="<?php echo get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID; ?>"><?php echo $comment->comment_author; ?>:</a>
                    <br /><em><?php echo strip_tags(substr(apply_filters('get_comment_text', $comment->comment_content), 0, $comment_len)); ?>...</em>
                   
                </li>
            <?php
            //ob_end_flush();
        }
    } else {
        echo "<li>No comments</li>";
    }
}

Обратите внимание на следующие переменные (цифры) в коде:

1
$comment_len = 80

— длина выводимого текста комментариев в знаках

1
get_comments('number=6')

— количество выводимых комментариев

1
get_avatar($comment,$size='40' )

— размер аватара

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

1
2
<h3>Комментарии</h3>
<?php dp_recent_comments(); ?>

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

Выбираете универсальный автомобиль? Ford s-max - современный автомобиль, идеальный для использования в городских условиях, позволяющий выезжать за город всей семьей. Вместительный багажник, комфортный салон, исключительная безопасность и экономичность - Ford s-max является одним из лучших минивенов. Узнать подробную информацию об этом автомобиле и купить его в Москве вы можете на сайте www.avtogermes.ru официального дилера АвтоГЕРМЕС.
Комментариев 7
  1. Спасибо, очень пригодилось.
    Единственное, что не понял – чего за знаки вопроса в конце местами – http://clip2net.com/clip/m10803/1268157501-clip-4kb.jpg.

    • Такие знаки вопроса (иногда квадратики) бывают, когда слово обрезается (ограничение на длину выводимого сообщения). Код простой, и он не умеет обрезать по концу слова, поэтому резет посредине – получаются непонятные символы. Чтобы не было таких символов, нужно использовать более серьезный плагин, например вот один из этих:
      http://n-wp.ru/2021
      http://n-wp.ru/595

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

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

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