Как создать собственную пагинацию в WordPress без плагинов

Пагинация — важный элемент любого сайта на WordPress, который помогает пользователям ориентироваться в большом количестве контента. Хотя существует множество плагинов, таких как WP-PageNavi, иногда хочется сделать пагинацию самостоятельно, чтобы лучше контролировать вывод и оптимизировать производительность сайта. В этой статье мы подробно рассмотрим, как создать кастомную пагинацию без сторонних плагинов, используя встроенные функции WordPress и собственный код.

Почему стоит отказаться от плагинов для пагинации

Плагины — это удобное решение, но они не всегда оптимальны. Во-первых, каждый дополнительный плагин увеличивает нагрузку на сайт и может конфликтовать с другими. Во-вторых, плагины часто делают универсальный код, который не всегда подходит под уникальный дизайн и требования проекта. Создавая пагинацию самостоятельно, мы получаем полный контроль над HTML-разметкой, классами CSS и логикой вывода.

Кроме того, кастомная пагинация позволяет интегрировать дополнительные функции, например, добавлять микроразметку для SEO или использовать AJAX-загрузку постов.

Основы создания пагинации в WordPress

Для начала напомним, что WordPress имеет встроенную функцию paginate_links(), которая генерирует ссылки пагинации на основе текущих параметров запроса. Основная задача — правильно передать параметры и оформить вывод.

Пример минимального кода пагинации:

function wppagenavi_custom_pagination() {
    global $wp_query;
    $big = 999999999; // нужно для замены
    echo paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'total' => $wp_query->max_num_pages,
        'prev_text'    => __('« Назад'),
        'next_text'    => __('Вперёд »'),
    ));
}

Вызывайте эту функцию в нужном месте шаблона, например, в файле index.php или archive.php после цикла WordPress.

Расширение пагинации: добавляем стили и улучшения

Чтобы сделать пагинацию более удобной и красивой, нужно добавить CSS-классы и обернуть ссылки в теги списка:

function wppagenavi_custom_pagination() {
    global $wp_query;
    $big = 999999999;
    $pages = paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => '?paged=%#%',
        'current' => max(1, get_query_var('paged')),
        'total' => $wp_query->max_num_pages,
        'prev_text' => '«',
        'next_text' => '»',
        'type' => 'array',
    ));

    if (is_array($pages)) {
        echo '<ul class="wppagenavi-pagination">';
        foreach ($pages as $page) {
            echo '<li class="wppagenavi-page-item">' . $page . '</li>';
        }
        echo '</ul>';
    }
}

Далее создайте CSS-стили для классов .wppagenavi-pagination и .wppagenavi-page-item, чтобы оформить внешний вид пагинации согласно вашему дизайну.

Пример простого CSS:

.wppagenavi-pagination {
    list-style: none;
    display: flex;
    gap: 8px;
    padding: 0;
}
.wppagenavi-page-item a {
    padding: 6px 12px;
    border: 1px solid #ccc;
    color: #333;
    text-decoration: none;
}
.wppagenavi-page-item .current {
    background-color: #0073aa;
    color: white !important;
    border-color: #0073aa;
}

Как добавить AJAX пагинацию без перезагрузки страницы

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

Общий принцип такой: при клике на ссылку пагинации срабатывает JavaScript, который отправляет AJAX-запрос на сервер, получает новый HTML с постами и заменяет содержимое контейнера.

Пример AJAX-скрипта:

jQuery(document).ready(function($) {
    $(document).on('click', '.wppagenavi-pagination a', function(e) {
        e.preventDefault();
        var link = $(this).attr('href');
        $('#posts-container').fadeOut(200, function() {
            $.get(link + ' #posts-container > *', function(data) {
                $('#posts-container').html(data).fadeIn(200);
            });
        });
    });
});

В данном примере предполагается, что список постов находится в контейнере с id posts-container. По клику на ссылку пагинации загружается содержимое новой страницы и заменяется в текущем блоке.

Обратите внимание, что для SEO важно, чтобы пагинация работала и без JavaScript, поэтому базовый вывод ссылок должен сохраняться.

Дополнительные советы по оптимизации пагинации

1. Используйте правильные параметры запроса — для сложных запросов, например, в кастомных WP_Query, пагинацию нужно настраивать вручную, передавая параметры paged и posts_per_page.

2. Добавляйте микроразметку Schema.org для пагинации, чтобы улучшить восприятие поисковыми системами.

3. Не выводите слишком много ссылок — ограничьте количество отображаемых страниц, например, показывая ссылки только вокруг текущей страницы.

4. Тестируйте пагинацию на разных типах контента — записи, страницы, кастомные типы.

Пример ограничения ссылок пагинации:

function wppagenavi_limited_pagination() {
    global $wp_query;
    $big = 999999999;
    $current = max(1, get_query_var('paged'));
    $total = $wp_query->max_num_pages;
    $links = [];

    if ($current > 1) {
        $links[] = '<a href="' . get_pagenum_link($current - 1) . '">«</a>';
    }

    $start = max(1, $current - 2);
    $end = min($total, $current + 2);

    for ($i = $start; $i <= $end; $i++) {
        if ($i == $current) {
            $links[] = '<span class="current">' . $i . '</span>';
        } else {
            $links[] = '<a href="' . get_pagenum_link($i) . '">' . $i . '</a>';
        }
    }

    if ($current < $total) {
        $links[] = '<a href="' . get_pagenum_link($current + 1) . '">»</a>';
    }

    echo '<div class="wppagenavi-limited-pagination">' . implode(' ', $links) . '</div>';
}

Такой подход делает пагинацию компактной и понятной.

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

⭐⭐⭐⭐⭐
Как исправить ошибку 404 при переходе по страницам пагинации WooCommerce
20.05.2026
Как быстро исправить ошибку 404 при переходе по страницам пагинации в WordPress
06.05.2026
Как сделать пагинацию для WooCommerce с использованием WP-PageNavi
30.12.2025
Как сделать пагинацию для WordPress на основе пользовательского запроса WP_Query
14.04.2026
Как исправить ошибку 404 при переходе по страницам пагинации в WordPress
18.04.2026
×
WordPress
дай сайту суперсилу!

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

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