Последние комментарии 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. И наслаждайтесь.
Скажу честно, не весь код писал сам. И не помню, где взял начальный вариант. Но внёс туда существенные изменения: сделал вывод только одобренных комментариев, упростил настройку и т.д.
57 ответов к “Последние комментарии WordPress — тексты комментариев в сайдбаре”
Вот спасибо хорошо Надо поставить себе такой код, кстати на hyperseo он по-моему даже лучше смотрится)
Так я на Hyperseo час, наверное, со стилями колдовал. А тут оставил дефолтно почти всё — лишь бы только читалось, не смещалось и не наезжало
Любимый, ты крут! Поставлю и себе такие комменты — гораздо круче, нежели стандартные в виджете
Хороший, негромоздкий код получился. Но себе не поставлю, теперь наоборот избавляюсь от всего лишнего.
Спасибо. Что же: моё дело — предложить
а ошибки в первом коде нет случайно? а то у меня сразу блог не отображаеться. может синтаксис напутан?
Вряд ли есть ошибка. Код копировал с этого блога. Плюс на www.seo-stories.ru код установлен согласно этой инструкции — работает. Скорее всего, просто не судьба
😀 Скорее всего у Вас что-то не так вставилось. Подтверждаю, работает ништячно, спасибо
Выдержки из комментариев не всегда описывают суть комментария. В выдержке может быть и цитата, ведь так?!
Всё может быть. Жду конструктивных предложений.
Идея появилась. Может кто знает, как сформулировать такой запрос, чтобы в списке последних комментариев было только по одному последнему комментарию на одну запись. Например, все последние комментарии могут быть написаны к последней записи, но при этом в списке будет только один последний комментарий к последней записи, другие последние комментарии будут взяты из других записей
Спасибо за идею, только для определения url ссылки нужно использовать get_comment_link, потому что конструкция с get_permalink не работает при разбивке комментариев на страницы.
Спасибо, взял на заметку
Спасибо, работает. Я немного усовершенствовал вывод комментов, правда убрав вывод аватаров за ненадобностью. Вот список улучшений и код:
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 не вписывался в тему.
Аха, вижу, сейчас комментарии в сайдбар красиво вписаны
Вот спасибо! Только вписал в Яндекс «wordpress последние комментарии» и сразу сюда попал. Ничего исправлять не пришлось, все сразу стало даже на мою капризную тему, съезжающую при малейшем неосторожном движении. Карты сайта здесь не нашел, жалко.
Юрий, рад, что помог вам.
Вот карта сайта: yandex.ru/yandsearch?site...net&lr=213&text=
Интересно... завтра займусь этим, попробую... Комменты здесь действительно выглядят привлекательно.
Спасибо Вам большое.
У меня тоже получилось вставить Ваш код в блог
Успехов!
У меня только сейчас руки дотянулись до этого. Всё сделал по инструкции, но изменений не было, пока не догадался отключить Вордпрессовский виджет комментариев. Большущее спасибо!
Добрый день, спасибо за код, но не могли бы вы подсказать как сделать, что бы сначала выводился автор комментария(ссылка на его запись), на следующей строке текст самого комментария, и на последней строке название записи(ссылка на сам комментарий).
Ё маё нипонимаю, почему не отображается в сайдбаре? как подключить эти комменты?
Подскажите как сделать, чтобы отображались комментарии только к определенной записи. В моем случае только комментарии из гостевой книги...
Юрий, у функции get_comments () есть параметр $post_id (число): ID поста/страницы. Если указать этот параметр, то функция вернет только комментарии к указанному посту или странице.
Здравствуйте! Подскажите, как заменить аватарку автора комментария на миниатюру поста, на которой он расположен? Как я понимаю, нужно узнать ID поста по значению $comments.
Вот так:
$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>
Да, с кодом в комментариях тут пока проблемка. Я понял, что имеется ввиду, попробуй
&post_id={$post->ID}
Не получается, появляется иконка текущей статьи (т.е. все иконки одинаковые во всех комментариях). Код ниже на скрине, подсвеченная строка — проблемная.
funkyimg.com/u2/4804/903/...13-07-22_001.png
Понял. Да, в этом случае будет не {$post->ID}, а {$comment->comment_post_ID}
Спасибо,
{$comment->comment_post_ID}
это то что нужно!У меня на сайте вордпресс какой-то глюк, что ли. В общем в комментах текст практически невидим, только бледная, нечитабельная тень от текста, так же и поля ввода инфы о комментаторе. В чём может быть проблема?
В 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
Скиньте рабочий вариант чтобы выводилось название записи к которой оставлен коммент и дата/время комментария. Аватарку и автора поста оставить желательно. Заранеее благодарю!)