Владельцы сайтов на WordPress часто сталкиваются с необходимостью ограничить количество отзывов, которые отображаются на странице, чтобы улучшить визуальное восприятие и ускорить загрузку. В этой статье подробно разберём, как установить лимит на количество отзывов (комментариев) в WordPress с помощью кода и плагинов, а также покажем примеры реализации.
Почему важно ограничивать количество отзывов
Большое количество отзывов на странице может негативно сказаться на скорости загрузки сайта, особенно если отзывы содержат много вложенных ответов, изображений и медиа. Кроме того, длинный список отзывов затрудняет посетителям быстро найти полезную информацию.
Ограничение показа отзывов позволяет:
- Улучшить скорость загрузки страниц;
- Сделать интерфейс более удобным и аккуратным;
- Снизить нагрузку на сервер;
- Добавить функционал пагинации или кнопку «Показать больше».
Как ограничить количество отзывов через functions.php
Самый простой способ — изменить параметры запросов комментариев с помощью фильтра pre_get_comments. Добавим в файл functions.php вашей темы следующий код:
function wpcat_limit_comments_per_page(\WP_Comment_Query $query) {
if (is_singular() && $query->query_vars['status'] === 'approve') {
$query->query_vars['number'] = 5; // Лимит отзывов на странице
$query->query_vars['offset'] = 0;
}
}
add_action('pre_get_comments', 'wpcat_limit_comments_per_page');
В этом примере мы ограничиваем количество отображаемых отзывов до 5 на любой записи (посте). Можно изменить число на любое другое по вашему усмотрению.
Пояснение к коду
Функция проверяет, что запрос выполняется для отдельной записи is_singular(), и что комментарии имеют статус «одобрен». Далее задаётся параметр number, который ограничивает вывод комментариев.
Добавление пагинации для отзывов
Ограничение количества отзывов без пагинации не всегда удобно, поэтому полезно реализовать постраничный вывод.
Для этого в файле comments.php вашей темы используйте функцию paginate_comments_links(). Пример:
if (have_comments()) {
wp_list_comments(array(
'style' => 'ol',
'short_ping' => true,
'avatar_size' => 50,
'per_page' => 5, // Лимит отзывов на страницу
'reverse_top_level' => false,
));
echo paginate_comments_links(array(
'prev_text' => '« Назад',
'next_text' => 'Вперёд »',
));
}
Параметр per_page задаёт количество отзывов на странице. Функция paginate_comments_links() автоматически сгенерирует навигацию по страницам.
Использование плагинов для ограничения и управления отзывами
Если вы предпочитаете готовые решения, обратите внимание на несколько плагинов для управления отзывами:
- WPDiscuz — мощный плагин для комментариев с возможностью настройки количества отображаемых отзывов и пагинации.
- Clearfy Pro — плагин для оптимизации WordPress, в том числе позволяет управлять комментариями и отключать лишние функции.
- My Popup — можно использовать для сбора отзывов в попап-окне с ограничением количества отображения.
Все эти плагины доступны на wpshop.ru с подробным описанием и поддержкой.
Как создать свой шорткод для показа ограниченного количества отзывов
Для более гибкого использования можно создать шорткод, который выводит заданное количество комментариев для конкретной записи.
function wpcat_comments_limit_shortcode($atts) {
$atts = shortcode_atts(array(
'post_id' => get_the_ID(),
'number' => 5,
), $atts, 'wpcat_comments_limit');
$comments = get_comments(array(
'post_id' => $atts['post_id'],
'number' => intval($atts['number']),
'status' => 'approve',
'order' => 'DESC',
));
if (!$comments) {
return '<p>Нет отзывов.</p>';
}
$output = '<ol class="wpcat-comments-list">';
foreach ($comments as $comment) {
$output .= '<li><strong>' . esc_html($comment->comment_author) . '</strong>: ' . esc_html($comment->comment_content) . '</li>';
}
$output .= '</ol>';
return $output;
}
add_shortcode('wpcat_comments_limit', 'wpcat_comments_limit_shortcode');
Используйте шорткод в записях или страницах так:
[wpcat_comments_limit number="3"] — чтобы показать 3 последних отзыва.
Дополнительные советы по оптимизации отзывов
Чтобы отзывам не навредила загрузка сайта, советую:
- Отключить аватары, если они не нужны, через
Settings > Discussionили кодом; - Использовать AJAX-загрузку отзывов для плавности интерфейса;
- Кэшировать блок с отзывами, используя плагины кэширования;
- Регулярно модерировать отзывы, удаляя спам и неактуальные.
Например, чтобы отключить аватары программно, добавьте в functions.php:
add_filter('get_avatar', '__return_false');
Заключение
Ограничение количества отзывов в WordPress — важный шаг для оптимизации сайта и улучшения пользовательского опыта. Вы можете реализовать это с помощью кода, добавив фильтры и пагинацию, либо использовать готовые плагины, такие как WPDiscuz или Clearfy Pro.