Последние комментарии WordPress — тексты комментариев в сайдбаре

В WordPress есть виджет «последние комментарии», но вот информативность его оставляет желать лучшего. К примеру, опубликовали вы новый пост, его 10 человек прокомментировали, и в сайдбаре у вас будет скучный список: «Аня, Вася, Зоя в ответ на ... то же самое». Куда это годится? Я же предлагаю публиковать последние комментарии с выдержками из их текста и аватарами авторов. Пример вы можете видеть в моём сайдбаре.

Предлагаемый способ не предполагает использование дополнительных плагинов. Но потребуются лишь небольшие изменения, которые необходимо будет сделать в редакторе темы. Всё просто и понятно.

В первую очередь, этот код:

function pavluha_recent_comments() {
    $comment_len = 100;
    $comment_k = 10;
    $comment_more = ' [...]';
    $comment_avatar_size = 35;
    $comments = get_comments('number='.$comment_k.'&status=approve');
    if ($comments) {
?>
<ul class="rec_comments">
<?
        foreach ($comments as $comment) {
?>
<li>
<?php echo get_avatar($comment,$comment_avatar_size); ?>
<a href="<?php echo get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID; ?>"><?php echo $comment->comment_author; ?></a>:
<?= mb_strimwidth(strip_tags(apply_filters('get_comment_text', $comment->comment_content)), 0, $comment_len+strlen($comment_more), $comment_more); ?>
</li>
<?php
        }
?>
</ul>
<?
    }
}

Нужно вставить в файл function.php (в админке «Внешний вид» — «Редактор» — «Функции темы (function.php)»). Можно вставить в самом начале после строчки <?php.

Тут некоторые настройки можете изменить на свой вкус:

  • 2 строка — максимальная длина текста комментария, комментарий большей длины будет усечён. Здесь максимальная длина — 100 символов;
  • 3 строка — сколько комментариев отображать. Здесь 10;
  • 4 строка — что добавлять к тексту комментария, если он усекается. Здесь добавится [...] — если будете менять, будьте внимательны с кавычками;
  • 5 строка — размер аватара. Здесь 35×35 пикселей.

Следующее изменение. Редактируем файл sidebar.php («Боковая колонка» или «Сайдбар»). Да, в том же Редакторе. В нужном месте следует вставить код:

<h3 class="widget-title">Блогеры пишут</h3>
<? pavluha_recent_comments(); ?>

Нужное место ищем опытным путём.

Затем нужно лишь настроить стиль оформления последних комментариев WordPress. Для этого редактируем файл style.css («Список стилей»). В конце этого файла нужно добавить такие строки:

.rec_comments li {
	padding: 5px 0px;
	clear: right;
}
.rec_comments img {
	float: right;
	margin: 5px 0px 5px 5px;
}

Если хотите, чтобы аватарки последних комментариев были выравнены по левому краю, то в обоих местах замените right на left. И наслаждайтесь. ;)

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

Запись опубликована в рубрике Web-мастеринг с метками , . Короткая ссылка для добавления в закладки: Последние комментарии WordPress — тексты комментариев в сайдбаре.

57 ответов к “Последние комментарии WordPress — тексты комментариев в сайдбаре”

zusicks438:

Вот спасибо хорошо :) Надо поставить себе такой код, кстати на hyperseo он по-моему даже лучше смотрится)

Pavluha.Net:

Так я на Hyperseo час, наверное, со стилями колдовал. А тут оставил дефолтно почти всё — лишь бы только читалось, не смещалось и не наезжало

Надюша:

Любимый, ты крут! Поставлю и себе такие комменты — гораздо круче, нежели стандартные в виджете :)

SwaEgo:

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

Pavluha.Net:

Спасибо. Что же: моё дело — предложить ;)

Евгений:

а ошибки в первом коде нет случайно? а то у меня сразу блог не отображаеться. может синтаксис напутан?

Pavluha.Net:

Вряд ли есть ошибка. Код копировал с этого блога. Плюс на www.seo-stories.ru код установлен согласно этой инструкции — работает. Скорее всего, просто не судьба

zusicks438:

😀 Скорее всего у Вас что-то не так вставилось. Подтверждаю, работает ништячно, спасибо :)

ABANOUB:

Выдержки из комментариев не всегда описывают суть комментария. В выдержке может быть и цитата, ведь так?!

Pavluha.Net:

Всё может быть. Жду конструктивных предложений.

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

Lampslave:

Спасибо за идею, только для определения url ссылки нужно использовать get_comment_link, потому что конструкция с get_permalink не работает при разбивке комментариев на страницы.

Спасибо, взял на заметку

dionus:

Спасибо, работает. Я немного усовершенствовал вывод комментов, правда убрав вывод аватаров за ненадобностью. Вот список улучшений и код:

1. Добавил горизонтальную полосу разделитель

2. Добавил вывод названия записи, к которой дается комментарий.

3. Ссылку сделал на сам текст комментария, поому как тогда легче на нее попасть мышкой. Имя автора сделал курсивом без ссылки.

function txtstyle_recent_comments() { $comment_len = 100; $comment_k = 10; $comment_more = ' [...]'; $comments = get_comments('number='.$comment_k.'&status=approve'); if ($comments) { ?> <B>comment_post_ID)->post_title; ?></B> <I>comment_author; ?> </I>: <a href="comment_post_ID ) . '#comment-' . $comment->comment_ID; ?>"> comment_content)), 0, $comment_len+strlen($comment_more), $comment_more); ?></a> <? } }

Сергей:

Спасибо! Быстро настроил и вывел комментарии на боковую панель, а то виджет от wordpress не вписывался в тему.

Pavluha.Net:

Аха, вижу, сейчас комментарии в сайдбар красиво вписаны

Юрий:

Вот спасибо! Только вписал в Яндекс «wordpress последние комментарии» и сразу сюда попал. Ничего исправлять не пришлось, все сразу стало даже на мою капризную тему, съезжающую при малейшем неосторожном движении. Карты сайта здесь не нашел, жалко.

Pavluha.Net:

Юрий, рад, что помог вам.

Вот карта сайта: yandex.ru/yandsearch?site...net&lr=213&text=

Игорь:

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

Анна Сказочница:

Спасибо Вам большое.

У меня тоже получилось вставить Ваш код в блог :)

Успехов!

Игорь:

У меня только сейчас руки дотянулись до этого. Всё сделал по инструкции, но изменений не было, пока не догадался отключить Вордпрессовский виджет комментариев. Большущее спасибо!

Сергей:

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

Олег:

Ё маё нипонимаю, почему не отображается в сайдбаре? как подключить эти комменты?

Юрий:

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

Pavluha.Net:

Юрий, у функции get_comments () есть параметр $post_id (число): ID поста/страницы. Если указать этот параметр, то функция вернет только комментарии к указанному посту или странице.

Виктор:

Здравствуйте! Подскажите, как заменить аватарку автора комментария на миниатюру поста, на которой он расположен? Как я понимаю, нужно узнать ID поста по значению $comments.

Pavluha.Net:

Вот так:

$thumbnail_id = get_metadata('post', $post->ID, '_thumbnail_id', true); if ($thumbnail_id) { $thumb_data = get_metadata('post', $thumbnail_id); $t['alt'] = $thumb_data['_wp_attachment_image_alt'][0]; $t['src'] = wp_get_attachment_thumb_url($thumbnail_id); } else { /* Нет тумбинашки у поста */ $t = array('src'=>'http://ваш-сайт/стандартная-картинка.jpg', 'alt'=>''); } echo '<img src="'.$t['src'].'" alt="'.$t['alt'].'">';

Только имейте ввиду, что всё это PHP-код, который должен вызываться внутри цикла WP. А то спрашивают иногда и сами не знают, что предполагает ответ.

Виктор:

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

<img src="" align=left>

Pavluha.Net:

Да, с кодом в комментариях тут пока проблемка. Я понял, что имеется ввиду, попробуй &post_id={$post->ID}

Виктор:

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

funkyimg.com/u2/4804/903/...13-07-22_001.png

Pavluha.Net:

Понял. Да, в этом случае будет не {$post->ID}, а {$comment->comment_post_ID}

Виктор:

Спасибо, {$comment->comment_post_ID}это то что нужно!

Марина:

У меня на сайте вордпресс какой-то глюк, что ли. В общем в комментах текст практически невидим, только бледная, нечитабельная тень от текста, так же и поля ввода инфы о комментаторе. В чём может быть проблема?

Pavluha.Net:

В style.css

Регина:

Спасибо! Только у Вас нашла то что нужно!

Павлуха:

Пожалуйста! У меня тут много всего нужного)

Сергей:

Обязательно поставлю, а то как то скучновато без этого выглядит сайт. Спасибо вам!

Павлуха:

Пожалуйста, Сергей, пользуйтесь)

Алексей:

А я в какое место не вставляю второй код, всегда пишет синтаксическую ошибку. Вставляю в файл sidebar.php Но безуспешно. Подскажите в чем проблема?) Может куда то ещё его можно вставить.

Сергей:

Павел когда ставлю код в файл в function.php сразу пропадает сайт. Подскажите пожалуйста в чем проблема?

Павлуха:

Алексей, Сергей, я отвечаю только за то, что в самом коде, опубликованном в посте, нет синтаксических ошибок. Но если у вас пропадает сайт, то вы не правильно вставляете код или сохраняете файл в неверной кодировке (нужно UTF-8 без BOM)

Алексей:

Не могу отписаться от комментов к этой записи. Нажимаю «Отписаться», потом ставлю галочку около этого поста и получаю Forbidden. Отпишите, плз.

Павлуха:

Алексей, извини за причинённые неудобства. Кое-что поправил в настройке сервера, теперь должен разрешить отписаться. Не нашёл, кстати, твоего адреса в списке подписок.

Алексей:

Вот такой адрес подписан [адрес скрыт]

Павлуха:

Тоже не найден. Возможно, вы уже отписались от комментариев сами, тогда вы не должны получить этот комментарий в письме. :)

Марина:

Спасибо большое, все отлично работает!

Павлуха:

Пожалуйста, пользуйтесь)

Александр:

А можно ли как то сюда прикрутить скроллинг, что было фиксированное окошко, там список последних комментариев, и это окошко можно было прокручивать вниз-вверх?

И можно ли как то сюда добавить последние комментарии добавленные людьми из вк?

Павлуха:

1) Можно. Для этого надо блоку с комментариями (в примере в статье — ul.rec_comments) в CSS прописать свойство height (или max-height) с указанием фиксированного значения высоты (или максимальной высоты, при превышении которой появится скролл), и ещё свойство overflow: auto

2) Комментарии ВКонтакте можно добавить только соседним блоком. В этой статье я писал, как вставить виджет комментариев ВКонтакте

Александр:

Добавляю в style.css

.rec_comments{max-height: 200px; overflow: auto; }

и ничего не появляется.

Так же у меня изменены свойства в style.css .rec_comments img .rec_comments a .rec_comments

Павлуха:

Добавил у себя на этом блоге стили: .rec_comments { max-height: 200px; overflow: auto; }

Полосы прокрутки появились. Проверил в Firefox, IE 10, 9, 8, Google Chrome, Opera — везде работает. Так что, ищите причину в своём файле стилей. Возможно, где-то ошибка синтаксиса, или стили переназначаются в дальнейшем, или заданный ранее стиль наследуется и отменяет заданный позднее, или браузер загрузил style.css из кэша...

Искать баги в CSS мне помогает Firebug для Firefox

Александр:

Всё спасибо, разобрался) оказалось, что я функцию по другому назвал)

Павлуха:

Ок, рад был помочь ;)

Олег Клышко:

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

Павлуха:

Так уж бывает, так уж выходит...

Владислав Олерских:

В моем случае уже после вставки кода в файл functions.php сайт полностью перестал грузиться...

Павлуха:

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

Владимир:

Скиньте рабочий вариант чтобы выводилось название записи к которой оставлен коммент и дата/время комментария. Аватарку и автора поста оставить желательно. Заранеее благодарю!)

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *