Как сделать пагинацию для контента в Page Builder WordPress

При работе с современными конструкторскими плагинами для WordPress, такими как Elementor, Beaver Builder, WPBakery и другими, часто возникает задача добавить пагинацию для длинного контента или вывода записей. Стандартные инструменты WordPress пагинации здесь не всегда работают «из коробки», поэтому важно понимать, как реализовать пагинацию в Page Builder с помощью кода или дополнительных плагинов.

Почему стандартная пагинация не всегда подходит в Page Builder

Большинство page builder’ов выводят контент через свои виджеты, которые могут использовать собственные запросы WP_Query или вовсе обходиться без них. Это значит, что стандартный хук paginate_links() или функции типа the_posts_pagination() не всегда применимы. В итоге пагинация либо не отображается, либо работает некорректно.

Чтобы реализовать пагинацию, нужно либо использовать встроенные в конструктор возможности (если они есть), либо создавать пользовательские решения с поддержкой AJAX или параметров URL.

Создание пользовательской пагинации для кастомного запроса в Page Builder

Рассмотрим пример, как добавить простую пагинацию для вывода записей в кастомном виджете или блоке, используя WP_Query и URL-параметр paged.

Шаг 1. Создаем функцию для запроса с пагинацией

function wppagenavi_get_custom_query_with_pagination() {
    $paged = max(1, get_query_var('paged', 1));

    $args = [
        'post_type' => 'post',
        'posts_per_page' => 5,
        'paged' => $paged,
    ];

    return new WP_Query($args);
}

Здесь мы получаем текущую страницу и создаём запрос с нужным количеством записей на страницу.

Шаг 2. Выводим записи и пагинацию

function wppagenavi_render_custom_loop() {
    $query = wppagenavi_get_custom_query_with_pagination();

    if ($query->have_posts()) {
        echo '<div class="custom-post-list">';
        while ($query->have_posts()) {
            $query->the_post();
            echo '<article>';
            echo '<h2>' . get_the_title() . '</h2>';
            echo '<div>' . get_the_excerpt() . '</div>';
            echo '</article>';
        }
        echo '</div>';

        // Пагинация
        $big = 999999999; // уникальное число
        echo paginate_links([
            'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
            'format' => '?paged=%#%',
            'current' => max(1, get_query_var('paged')),
            'total' => $query->max_num_pages,
            'prev_text' => '« Назад',
            'next_text' => 'Вперед »',
        ]);

        wp_reset_postdata();
    } else {
        echo '<p>Записей не найдено.</p>';
    }
}

Данную функцию можно подключить в PHP-тему в том месте, где нужно вывести пагинируемый список.

Добавление пагинации в Page Builder с AJAX для плавной подгрузки

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

Пример AJAX пагинации с jQuery

// PHP: AJAX обработчик
add_action('wp_ajax_wppagenavi_ajax_pagination', 'wppagenavi_ajax_pagination_handler');
add_action('wp_ajax_nopriv_wppagenavi_ajax_pagination', 'wppagenavi_ajax_pagination_handler');

function wppagenavi_ajax_pagination_handler() {
    $paged = isset($_POST['page']) ? intval($_POST['page']) : 1;

    $args = [
        'post_type' => 'post',
        'posts_per_page' => 5,
        'paged' => $paged,
    ];
    $query = new WP_Query($args);

    if ($query->have_posts()) {
        ob_start();
        while ($query->have_posts()) {
            $query->the_post();
            echo '<article><h2>' . get_the_title() . '</h2></article>';
        }
        wp_reset_postdata();
        $content = ob_get_clean();
        wp_send_json_success(['content' => $content, 'max_page' => $query->max_num_pages]);
    } else {
        wp_send_json_error('Нет записей');
    }
    wp_die();
}

// JS (подключить в footer или отдельным файлом)
jQuery(document).ready(function($){
    let currentPage = 1;
    const maxPage = 10; // можно динамически получать из PHP

    $('#load-more-btn').on('click', function(){
        if (currentPage >= maxPage) return;
        currentPage++;
        $.post(
            wppagenavi_ajax_obj.ajax_url,
            {
                action: 'wppagenavi_ajax_pagination',
                page: currentPage
            },
            function(response) {
                if(response.success) {
                    $('#custom-post-list').append(response.data.content);
                    if(currentPage >= response.data.max_page) {
                        $('#load-more-btn').hide();
                    }
                }
            }
        );
    });
});

Для работы этого кода нужно локализовать скрипт, передав в него ajax_url и добавить кнопку с id load-more-btn и контейнер с id custom-post-list.

Полезные плагины для пагинации в Page Builder

Если вы не хотите писать код с нуля, можно обратить внимание на следующие плагины, которые интегрируются с популярными конструкторскими решениями:

  • ABC Pagination — расширенный плагин пагинации с множеством настроек и поддержкой AJAX. Отлично подходит для кастомных запросов.
  • WP-PageNavi — классика, которую можно адаптировать под Page Builder с помощью небольших доработок.
  • Clearfy Pro — помимо оптимизации WordPress, содержит настройки по улучшению пагинации и скорости загрузки.

Все эти плагины доступны на WPSHOP.RU с подробной документацией и поддержкой.

Как интегрировать пагинацию с WP-PageNavi в кастомный шаблон Page Builder

Если вы используете WP-PageNavi, то можете вывести пагинацию следующим образом:

function wppagenavi_render_pagenavi() {
    if (function_exists('wp_pagenavi')) {
        wp_pagenavi();
    } else {
        echo '<p>Плагин WP-PageNavi не установлен.</p>';
    }
}

После этого вызовите wppagenavi_render_pagenavi() в нужном месте шаблона или виджета Page Builder.

Поддержка SEO при пагинации в Page Builder

Очень важно, чтобы пагинация была корректно воспринята поисковыми системами. Используйте в заголовках и мета-тегах правильные атрибуты, такие как rel="next" и rel="prev". Если вы используете AJAX-пагинацию, позаботьтесь о наличии уникальных URL для каждой страницы пагинации и динамически изменяйте данные через History API.

Для этого можно добавить в functions.php следующий код для вывода тегов:

function wppagenavi_add_rel_prev_next() {
    if (is_paged()) {
        $paged = get_query_var('paged');
        $prev = $paged - 1;
        $next = $paged + 1;

        if ($prev > 0) {
            echo '<link rel="prev" href="' . esc_url(get_pagenum_link($prev)) . '" />';
        }
        if ($next <= $GLOBALS['wp_query']->max_num_pages) {
            echo '<link rel="next" href="' . esc_url(get_pagenum_link($next)) . '" />';
        }
    }
}
add_action('wp_head', 'wppagenavi_add_rel_prev_next');

Итог

Создание пагинации в Page Builder WordPress — задача, требующая понимания работы с WP_Query, AJAX и особенностей выбранного конструктора. В статье приведены практические решения, которые вы сможете адаптировать под свои проекты. Использование плагинов с возможностью кастомизации позволит сэкономить время и избежать ошибок.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Пагинация WooCommerce не работает: причины и решение
02.05.2026
Как установить и настроить WP-PageNavi для пагинации в WordPress
22.02.2026
Как исправить ошибку 404 при переходе по страницам пагинации в WordPress
18.04.2026
Как сделать пагинацию для кастомных статусов записей в WordPress
01.03.2026
Как добавить пагинацию в WordPress для комплексных запросов с помощью WP_Query
12.03.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙