Пагинация архива кастомного типа записей с помощью WP-PageNavi

В WordPress часто возникает задача сделать пагинацию для архивов кастомных типов записей (Custom Post Types, CPT). Стандартные функции пагинации не всегда работают корректно в таких случаях, особенно при кастомных запросах WP_Query. В этой статье разберём, как правильно реализовать пагинацию для архивов CPT с помощью популярного плагина WP-PageNavi, чтобы пользовательский интерфейс оставался удобным, а SEO — оптимальным.

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

WordPress по умолчанию использует глобальный объект $wp_query для построения пагинации на страницах архивов. Однако если вы используете собственный запрос через WP_Query для вывода кастомных записей, стандартная пагинация не будет знать о вашем запросе и будет отображать некорректные ссылки.

Плагин WP-PageNavi упрощает создание пагинации, но его функции также ориентированы на глобальный запрос. Чтобы пагинация корректно работала с кастомным запросом, нужно передавать в неё параметры вашего WP_Query.

Пример неправильного использования:

if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        // вывод записей
    endwhile;
    wp_pagenavi(); // пагинация для глобального запроса
endif;

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

Как правильно использовать WP-PageNavi для пагинации CPT

Для корректной пагинации необходимо:

  • Создать WP_Query с параметрами для CPT и пагинации;
  • Передать этот объект в функцию wp_pagenavi();
  • Обеспечить правильную навигацию с помощью параметра paged.

Рассмотрим пример. Допустим, у вас есть кастомный тип записей product, и вы хотите вывести архив с пагинацией.

function wppagenavi_get_paged() {
    return max( 1, get_query_var('paged') );
}

$paged = wppagenavi_get_paged();

$args = [
    'post_type' => 'product',
    'posts_per_page' => 10,
    'paged' => $paged
];

$custom_query = new WP_Query( $args );

if ( $custom_query->have_posts() ) :
    while ( $custom_query->have_posts() ) : $custom_query->the_post();
        // вывод контента записи
    endwhile;

    wp_pagenavi( [ 'query' => $custom_query ] );
    wp_reset_postdata();
else :
    echo '<p>Записей не найдено.</p>';
endif;

Обратите внимание, что в вызове wp_pagenavi() мы передаём параметр query с нашим объектом WP_Query. Это гарантирует, что пагинация будет работать именно с нашим запросом.

Обработка параметра paged для корректной навигации

Переменная paged отвечает за текущую страницу пагинации. Важно правильно её получить. Иногда бывает, что get_query_var('paged') возвращает 0 или пустое значение, особенно если используется ЧПУ или кастомные правила пермалинков.

Функция wppagenavi_get_paged() в примере выше возвращает минимум 1, что предотвращает ошибки при формировании запроса.

Если у вас есть пагинация с несколькими параметрами (например, фильтры или сортировка), убедитесь, что все они корректно передаются в URL и обрабатываются в WP_Query.

Пример интеграции с WP-Shop продукцией

Если вы используете в связке с CPT какой-либо плагин из WPShop, например, для создания каталога товаров, то пагинация на архиве станет ещё важнее.

Например, для кастомного запроса с фильтрами из плагина Clearfy Pro или Expert Review можно расширить WP_Query, добавив мета-запросы и передать в wp_pagenavi() уже итоговый объект:

$args = [
    'post_type' => 'product',
    'posts_per_page' => 12,
    'paged' => $paged,
    'meta_query' => [
        [
            'key' => 'wppagenavi_clearfy_rating',
            'value' => 4,
            'compare' => '>='
        ]
    ]
];
$custom_query = new WP_Query( $args );
if ( $custom_query->have_posts() ) {
    // вывод записей
    wp_pagenavi( ['query' => $custom_query] );
}
wp_reset_postdata();

Такой подход позволяет гибко строить пагинацию даже для сложных каталогов.

Советы по SEO и UX для пагинации архивов CPT

Правильная пагинация улучшает восприятие сайта пользователями и поисковыми системами. Вот несколько рекомендаций:

  • Используйте ключевой параметр paged для правильной адресации страниц;
  • Добавьте в шаблон пагинации rel="next" и rel="prev" для улучшения индексации;
  • Ограничьте количество записей на странице, чтобы не перегружать страницу;
  • Проверяйте, что в URL не появляются дублирующиеся параметры, чтобы избежать проблем с каноникализацией.

Плагин WP-PageNavi помогает быстро и красиво оформить пагинацию, а приведённые примеры кода гарантируют её корректную работу именно с кастомными типами записей.

Заключение

Реализация пагинации для архивов кастомных типов записей — задача несложная, если учитывать нюансы работы WP_Query и использовать функционал WP-PageNavi с передачей объекта запроса. Такой подход обеспечит корректное отображение страниц, удобство пользователей и улучшит SEO-показатели вашего сайта на WordPress.

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

⭐⭐⭐⭐⭐
Как сделать пагинацию для WooCommerce с использованием WP-PageNavi
30.12.2025
Как создать собственную пагинацию в WordPress без плагинов
01.11.2025
Как установить и настроить WP-PageNavi для пагинации в WordPress
22.02.2026
Как добавить пагинацию в WP REST API
09.12.2025
Как сделать пагинацию для постов по датам в WordPress
15.12.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше