Последние комментарии WordPress с аватарами без плагина

Без плагина WordSmall

Перед выполнением какой-либо задачи следует хорошенько поискать все возможные варианты ее решения. Это касается многого, но в данном случае вывода последних комментариев в определённом месте, допустим, в сайдбаре. Чтобы вывести свежие комментарии WordPress можно воспользоваться плагином, к примеру, WP-RecentComments. Но это создаст дополнительную нагрузку на сайт что увеличит больше запросов к базе данных. В стандарте в WordPress есть свой виджет последних комментариев, но он выводит без аватарок, только текст.

Как же вывести последние WordPress комментарии с аватарками? очень просто использовать фрагмент кода, приведенный ниже. Это позволит избежать лишнего плагина и получить нужный результат. Место можете определить любое, но, как правило, последние комментария выводят в сайдбаре.

Если вы не любитель копаться в шаблонных файлов, искать подходящее место куда вставить код. Тогда вам следует сделать поддержку php в сайдбаре WordPress и через текстовый виджет вывести последние комментарии.

Шаг 1.

Зайдите в админ-панель на вкладку Внешний вид – Виджеты. Добавьте текстовый виджет и в поле ввода вставьте код:

<?php $comments = get_comments('status=approve&number=5'); ?>
<ul class="widgcomm">
    <?php foreach ($comments as $comment) { ?>
        <li class="comcont"><?php
            $title = get_the_title($comment->comment_post_ID);
            echo get_avatar( $comment, $size = '35');
            echo '<span class="tecom">' . ($comment->comment_author) . '';
            ?> к посту: </span><a class="auth" href="<?php echo get_permalink($comment->comment_post_ID); ?>"
                                  rel="external nofollow" title="<?php echo $title; ?>">
                <?php echo $title; ?> </a>
            "<?php
            echo  '<span class="tecom">' . wp_html_excerpt( $comment->comment_content, 35 ) .
                '</span>'; ?>.."
            <?php $d = "M d, Y";
            $comment_ID = $comment->comment_ID;
            $comment_date = get_comment_date( $d, $comment_ID );
            $comment_PID = $comment->comment_post_ID;
            echo $comment_date;?>
            <?php  echo 'Всего комм.: '.get_comments_number($comment_PID) ?>
        </li>
    <?php }  ?> </ul>

Количество комментарий.

('status=approve&number=5');

Размер аватарок.

$size = '35'

Количество символов сообщения.

$comment->comment_content, 35

Шаг 2.

Откройте файл style.css и пропишите стили чтобы все корректно отображалось.

ul.widgcomm {
        margin-left: 0;
        list-style: none;
}
li.comcont {
   clear:both;
   min-height: 60px;
   margin-bottom: 5px;
}
.widgcomm .avatar {
   float:left;
   margin-top: 5px !important;
   margin-right:10px !important;
   border: #d8d8d8 1px solid;
}
span.tecom {
        font-weight: bold;
        color: #626264;
}

a.auth {
 color: #05788e !important;
 transition:0.2s all;
}
a.auth:hover {
    color: #fb7c0a !important;
}

Результат.

Последние комментарии WordPress с аватарами без плагина

Вот и все, стили изменяйте на свое усмотрение.

Автор, он же Андрей, он же Admin, он же WordSmall

Лентяй-любитель, окончил высшую школу безделья с многочисленными знаками отличия. Создатель этого небольшого «чудо-блога» о еще более «чудном» контенте.

E-mail Google+ Twitter
Комментариев: 30
  • Сергей

    Спасибо! Всё работает отлично. Скажи пожалуйста, как ещё в код добавить функцию вывода количества комментариев и дату?

    • WordSmall

      Количество комментарий в статье указано как изменить. Насчет даты, я обновил код просто скопируйте заново и будет вам дата.

      • Сергей

        Вы маленько не поняли меня, я имел в виду не количество отображаемых коментов в сайдбаре, а общеее количество комеентов к выводимому посту.

        Например так — Комментарии: 100 | Дата: 18.10.2014

        Заранее Огромное Спасибо!

  • WordSmall

    Перед закрывающим тегом </li> добавьте следующее:

    <?php echo 'Комментарий: '.get_comments_number($comment_PID) ?> И оберните дату с кол. комментарий в блок div, задайте какой-нибудь класс, пропишите желаемые стили. Но, это пожеланию)

    • Сергей

      Спасибо дружище! Помоги ещё пожалуйста, как можно сделать, что бы загружать изображения в отдельную папку для каждого поста, а то когда все картинки в одной папке uploads не очень удобно?

      • WordSmall

        Рад был помочь! Попробуйте воспользоваться плагином Custom Upload Dir.

      • Вячеслав

        Глупое решение. Лучше настройте загрузку файлов в папки по году и месяцу — настраивается в админке. Нет смысла усложнять структуру папками бесчисленными.

  • Сергей

    И оберните дату с кол. комментарий в блок div, задайте какой-нибудь класс, пропишите желаемые стили. Но, это пожеланию)

    Вот не задача, что то я и не заметил сразу, в общем получается так, что после каждого последнего добавленного комментария общее количество комментариев меняется на цифру последнего коммента. Как быть?

    • WordSmall

      Не совсем понял? Выводится количество комментарий комментируемого поста.

      • Сергей

        Выводится количество комментарий комментируемого поста, то есть выводится одинаковая цифра для всех других комментариев к другим постам.

  • Вячеслав

    Сергей

    Где вам нужно выводить количество комментариев? Если на единичной странице записи — код нужно добавлять в single.php или в скрипт, отвечающий за вывод поста.

  • Сергей

    В общем получается так, если посетитель оставил один комментарий, то эта же цифра, то есть «1 комментарий» отображается для всех остальных оставленных комментариев к другим постам.

    • WordSmall

      Скопируйте код в статье заново, все работает.

      • Сергей

        Вот код, проверь

        comment_post_ID); echo get_avatar( $comment, $size = '38'); echo '' . ($comment->comment_author) . ''; ?> к посту: <a class="auth" href="comment_post_ID); ?>" rel="external nofollow" title=""> </a> <?php echo '' . wp_html_excerpt( $comment->comment_content, 130 ) . ''; ?>........ | Дата: comment_ID; $comment_date = get_comment_date( $d, $comment_ID ); echo $comment_date;?>

  • Сергей

    comment_post_ID); echo get_avatar( $comment, $size = '38'); echo '' . ($comment->comment_author) . ''; ?> к посту: <a class="auth" href="comment_post_ID); ?>" rel="external nofollow" title=""> </a> <?php echo '' . wp_html_excerpt( $comment->comment_content, 130 ) . ''; ?>........ | Дата: comment_ID; $comment_date = get_comment_date( $d, $comment_ID ); echo $comment_date;?>

  • Сергей

    Я понял из за чего такое получается, из за того, что я меняю функцию вывода даты и количество комментариев. Скажи как сделать, что бы выводилось вот так Комментарии: 30 | Дата: 23.06.2014

  • Сергей

    Вроде сделал, спасибо ещё раз тебе за терпение и помощь, удачи тебе и процветания!!!

  • Вадим

    Спасибо за код! Подскажите, как сделать так, чтобы ссылка вела не на статью, а на комментарий (hnml#comment-000).

    • WordSmall

      Вадим, Не за что ;-) Измените формат ссылки на этот:

      <a class="auth" href="<?php echo get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID ?>

      • Вадим

        WordSmall, Спасибо большое, все получилось.

  • Андрей

    Здравствуйте. А как необходимо изменить код, чтобы текст комментария был кликабельным и вёл на сам комментарий на странице?

    • WordSmall

      Здравствуйте. Оберните в тег ссылки с адресом

      <?php echo get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID ?>

      • Андрей

        Спасибо! Реализовал задуманное ;-)

      • WordSmall

        Не за что)

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