В этой статье мы расскажем, как выводить свежие комментарии в сайдбаре без необходимости установки плагинов. Показ новых комментариев на боковой панели значительно повысит взаимодействие с вашими посетителями для активного обсуждения контента.
Мы создадим собственный функциональный шорткод, который поможет нам легко и красиво вывести новые комментарии на нашем сайте. Никаких плагинов — только чистый и оптимизированный код для отображения актуальных комментариев прямо в сайдбаре сайта. Для создания собственного шорткода нам потребуется лишь немного кода.
Первым делом откройте файл functions.php и поместите в него наш шорткод.
function wordsmall_comments_shortcode() {
ob_start();
$comments = get_comments('status=approve&number=5'); ?>
<ul class="ws_wrap_widget_comm">
<?php foreach ($comments as $comment) { ?>
<li class="ws_content_widget_comm">
<div class="auther_comm_ava">
<?php $title = get_the_title($comment->comment_post_ID);
echo get_avatar( $comment, $size = '35');
echo '<span>' . ($comment->comment_author) . ''; ?> к посту: </span>
</div>
<div class="ws_text_comm_title">
<a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php echo $comment->comment_ID; ?>" title="<?php echo $title; ?>"> <?php echo $title; ?></a>
<?php echo '<span class="ws_text_comm">' . '"' . wp_html_excerpt( $comment->comment_content, 75 ) . '.."' .'</span>'; ?>
</div>
<div class="ws_data_comm_num">
<span class="ws_comm_data"><?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; ?></span>
<span class="ws_comm_number"><?php echo 'Комментариев:'.get_comments_number($comment_PID) ?></span>
</div>
</li>
<?php } ?>
</ul>
<?php
return ob_get_clean();
}
add_shortcode('ws_recent_comments', 'wordsmall_comments_shortcode');
Параметры функции
('status=approve&number=5'); — Количество комментарий
$size = '35' — Размер аватарок
$comment->comment_content, 35 — Количество символов сообщения
На следующем этапе мы обеспечим поддержку шорткодов в сайдбаре. Для этого достаточно добавить следующую строку в файл functions.php:
//поддержка шорткода в сайдбаре
add_filter('widget_text', 'do_shortcode');
Теперь отправляемся в админку и выбираем раздел «Внешний вид — Виджеты». Затем добавляем новый виджет «HTML-код». В открывшемся окне нам нужно вставить зарегистрированный нами ранее шорткод, который выглядит так: [ws_recent_comments].
Приближаемся к финальному этапу. Добавьте стили в файл style.css, и смело можете редактировать их под дизайн своего сайта.
ul.ws_wrap_widget_comm {
padding: 0;
margin: 0;
list-style: none;
}
ul.ws_wrap_widget_comm br {
display: none;
}
.auther_comm_ava {
margin-bottom: 15px;
}
.auther_comm_ava span {
font-weight: 500;
}
.auther_comm_ava img {
border-radius: 50%;
vertical-align: middle;
display: inline-block;
margin-right: 10px;
}
.ws_text_comm_title a {
margin-bottom: 15px;
display: inline-block;
}
.ws_text_comm_title .ws_text_comm {
padding: 13px;
background: #fff;
display: inline-block;
font-size: 14px;
border-radius: 5px;
border: 1px solid #eee;
margin-bottom: 15px;
}
.ws_data_comm_num {
margin-bottom: 2rem;
}
.ws_data_comm_num span {
font-size: 14px;
color: #777;
display: inline-block;
}
.ws_data_comm_num span.ws_comm_data {
margin-right: 10px;
}
Старый способ
Сделайте поддержку php в сайдбаре WordPress
Зайдите в админ-панель на вкладку «Внешний вид – Виджеты». Добавьте текстовый виджет и в поле ввода вставьте код:
<?php $comments = get_comments('status=approve&number=5'); ?>
<ul class="ws_wrap_widget_comm">
<?php foreach ($comments as $comment) { ?>
<li class="ws_content_widget_comm">
<div class="auther_comm_ava">
<?php $title = get_the_title($comment->comment_post_ID);
echo get_avatar( $comment, $size = '35');
echo '<span>' . ($comment->comment_author) . ''; ?> к посту: </span>
</div>
<div class="ws_text_comm_title">
<a href="<?php echo get_permalink($comment->comment_post_ID); ?>#comment-<?php echo $comment->comment_ID; ?>" title="<?php echo $title; ?>"> <?php echo $title; ?></a>
<?php echo '<span class="ws_text_comm">' . '"' . wp_html_excerpt( $comment->comment_content, 75 ) . '.."' .'</span>'; ?>
</div>
<div class="ws_data_comm_num">
<span class="ws_comm_data"><?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; ?></span>
<span class="ws_comm_number"><?php echo 'Комментариев:'.get_comments_number($comment_PID) ?></span>
</div>
</li>
<?php } ?>
</ul>
Откройте файл style.css и добавьте в него следующие стили:
ul.ws_wrap_widget_comm {
padding: 0;
margin: 0;
list-style: none;
}
ul.ws_wrap_widget_comm br {
display: none;
}
.auther_comm_ava {
margin-bottom: 15px;
}
.auther_comm_ava span {
font-weight: 500;
}
.auther_comm_ava img {
border-radius: 50%;
vertical-align: middle;
display: inline-block;
margin-right: 10px;
}
.ws_text_comm_title a {
margin-bottom: 15px;
display: inline-block;
}
.ws_text_comm_title .ws_text_comm {
padding: 13px;
background: #fff;
display: inline-block;
font-size: 14px;
border-radius: 5px;
border: 1px solid #eee;
margin-bottom: 15px;
}
.ws_data_comm_num {
margin-bottom: 2rem;
}
.ws_data_comm_num span {
font-size: 14px;
color: #777;
display: inline-block;
}
.ws_data_comm_num span.ws_comm_data {
margin-right: 10px;
}
Вот и все, стили изменяйте на свое усмотрение.
Да, с синтаксисом я намудрил, просто не знаю как правильно указать сразу несколько post_id откуда будут выводиться комменты. И почему то перестал видеть отправленные в вашей теме комментарии 0_о.
В общем если указывать один конкретный post_id=2049, то комментарии именно с него и выводит. А если несколько, то получается все равно берет комментарии со всех страниц сайта, я это не сразу понял потому что тестовые комменты вбивал именно на интересующих меня страницах. Пробовал так указывать get_comments ('status=approve&number=5&post_in= (2049,2065)'); ?> или так get_comments ('status=approve&number=5&post_in= array (2049,2065)'); ?>. Все равно выводит комменты со всех страниц 🙂
мда, дело было не в бабине. Разница между post_in и post__in все таки ощутимая. ВСЕ, ЗАРАБОТАЛО. ТЫ БОГ.
А параметр category_name сюда можно вставить? Чтобы выводил по рубрикам комменты, а то добавляю &category_name=news и ни чего не меняется .
Вот все параметры codex.wordpress.org/Funct...nce/get_comments функции
get_commentsОтлично!