Автоматическое отображение последних комментариев с подгрузкой в WordPress

Отображение последних комментариев на сайте WordPress — популярная задача для повышения вовлеченности пользователей и улучшения взаимодействия с контентом. Однако вывод всех комментариев на одной странице может замедлить загрузку сайта, особенно если их очень много. В этой статье разберем, как реализовать автоматическое отображение последних комментариев с динамической подгрузкой (ленивой загрузкой, lazy load) через AJAX, чтобы повысить скорость и удобство.

Зачем нужна подгрузка последних комментариев в WordPress

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

Подгрузка комментариев по мере прокрутки или по кнопке «Показать ещё» позволяет:

  • Значительно сократить первоначальный объем загружаемых данных.
  • Сделать интерфейс более отзывчивым и современным.
  • Обеспечить удобный просмотр всех комментариев без перезагрузки страницы.

Такой подход особенно актуален для сайтов с активной аудиторией и большим количеством комментариев.

Как вывести последние комментарии в WordPress: базовый пример

Для начала рассмотрим, как получить последние комментарии программно. В WordPress есть функция get_comments(), которая позволяет запросить комментарии с разными параметрами.

function wpkit_get_latest_comments($number = 5) {
    return get_comments(array(
        'number' => $number,
        'status' => 'approve',
        'post_status' => 'publish',
        'orderby' => 'comment_date_gmt',
        'order' => 'DESC'
    ));
}

Этот код вернёт последние 5 одобренных комментариев к опубликованным постам. Далее их можно вывести в шаблоне:

$comments = wpkit_get_latest_comments(5);
echo '<ul class="wpkit-latest-comments">';
foreach ($comments as $comment) {
    echo '<li><strong>' . esc_html($comment->comment_author) . '</strong>: ' . esc_html(wp_trim_words($comment->comment_content, 15)) . '</li>';
}
echo '</ul>';

Реализация AJAX-подгрузки последних комментариев

Добавляем обработчик AJAX в functions.php

Чтобы динамически подгружать комментарии без перезагрузки страницы, создадим AJAX-обработчик WordPress. Он будет возвращать следующий блок комментариев по запросу.

add_action('wp_ajax_wpkit_load_comments', 'wpkit_load_comments_ajax');
add_action('wp_ajax_nopriv_wpkit_load_comments', 'wpkit_load_comments_ajax');

function wpkit_load_comments_ajax() {
    $offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0;
    $number = 5; // Кол-во комментариев за один запрос

    $comments = get_comments(array(
        'number' => $number,
        'offset' => $offset,
        'status' => 'approve',
        'post_status' => 'publish',
        'orderby' => 'comment_date_gmt',
        'order' => 'DESC'
    ));

    if (empty($comments)) {
        wp_send_json_error('No more comments');
    }

    ob_start();
    echo '<ul class="wpkit-latest-comments">';
    foreach ($comments as $comment) {
        echo '<li><strong>' . esc_html($comment->comment_author) . '</strong>: ' . esc_html(wp_trim_words($comment->comment_content, 15)) . '</li>';
    }
    echo '</ul>';

    $html = ob_get_clean();

    wp_send_json_success(array('html' => $html));
}

Подключаем JavaScript для подгрузки

Теперь создадим скрипт, который будет отправлять AJAX-запросы и добавлять новые комментарии на страницу. Подключите его в теме или плагине.

function wpkit_enqueue_scripts() {
    wp_enqueue_script('wpkit-lazy-comments', get_template_directory_uri() . '/js/wpkit-lazy-comments.js', array('jquery'), null, true);
    wp_localize_script('wpkit-lazy-comments', 'wpkit_ajax', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpkit_lazy_comments_nonce'),
    ));
}
add_action('wp_enqueue_scripts', 'wpkit_enqueue_scripts');

Содержимое файла js/wpkit-lazy-comments.js

jQuery(document).ready(function($) {
    var offset = 5;
    var loading = false;

    $('#load-more-comments').on('click', function() {
        if (loading) return;
        loading = true;
        $.ajax({
            url: wpkit_ajax.ajax_url,
            method: 'POST',
            data: {
                action: 'wpkit_load_comments',
                offset: offset,
                _ajax_nonce: wpkit_ajax.nonce
            },
            success: function(response) {
                if (response.success) {
                    $('.wpkit-latest-comments').append(response.data.html.replace('<ul class="wpkit-latest-comments">', '').replace('</ul>', ''));
                    offset += 5;
                    loading = false;
                } else {
                    $('#load-more-comments').text('Больше комментариев нет').prop('disabled', true);
                }
            },
            error: function() {
                alert('Ошибка загрузки комментариев');
                loading = false;
            }
        });
    });
});

Выводим первые комментарии и кнопку подгрузки в шаблоне

В нужном месте вашего шаблона вставьте следующий код:

$comments = wpkit_get_latest_comments(5);
echo '<ul class="wpkit-latest-comments">';
foreach ($comments as $comment) {
    echo '<li><strong>' . esc_html($comment->comment_author) . '</strong>: ' . esc_html(wp_trim_words($comment->comment_content, 15)) . '</li>';
}
echo '</ul>';
echo '<button id="load-more-comments">Показать ещё комментарии</button>';

Использование плагинов для расширения функционала

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

  • Ajax Load More — мощный плагин для бесконечной подгрузки контента, включая комментарии.
  • WP Comment Ajax — простой плагин для AJAX-подгрузки комментариев.

Для интеграции с вашим сайтом и стилистикой иногда полезно доработать их шаблоны или добавить собственный CSS.

Заключение по теме подгрузки комментариев

Подгрузка последних комментариев через AJAX — отличное решение для сайтов на WordPress с большим количеством отзывов и обсуждений. Это повышает скорость загрузки страниц, удобство пользователей и снижает нагрузку на сервер. В статье приведён простой пример реализации с использованием стандартных средств WordPress и jQuery, который можно адаптировать под свои задачи.

Если вы хотите расширить функционал, обратите внимание на плагины Ajax Load More и WP Comment Ajax, а также рассмотрите возможность интеграции с плагинами WPShop, например, для создания отзывов и рейтингов с WPRemark (подробнее).

Как использовать хуки WordPress для изменения функционала сайта
08.12.2025
Как использовать OmniVideo для автоматической вставки видео в WordPress
25.02.2026
Как автоматически отключать плагины в WordPress при ошибках
06.04.2026
Автоматическое удаление старых черновиков в WordPress по расписанию
27.03.2026
Как проверить и исправить ошибку 429 в WooCommerce
19.05.2026