Как исправить несоответствие пагинации при использовании WP_Query в WordPress

Диагностика проблемы: почему пагинация не работает с WP_Query

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

Проверяем, что именно не так

  • Переходим на страницу пагинации, например, /page/2/.
  • Проверяем, меняется ли параметр paged в запросе (get_query_var('paged')).
  • Если параметр не меняется, значит, WP_Query всегда запрашивает первую страницу.
  • Если меняется, но контент не обновляется, значит, проблема в аргументах запроса.

Пошаговое решение: правильная настройка пагинации с WP_Query

Основное правило — передавать параметр paged в конструктор WP_Query, учитывая, что значение может быть в paged или page в зависимости от типа страницы.

Пример рабочего кода:

if (get_query_var('paged')) {
    $paged = get_query_var('paged');
} elseif (get_query_var('page')) {
    $paged = get_query_var('page');
} else {
    $paged = 1;
}

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

$custom_query = new WP_Query($args);

if ($custom_query->have_posts()) :
    while ($custom_query->have_posts()) : $custom_query->the_post();
        the_title('<h2>', '</h2>');
        the_excerpt();
    endwhile;

    // Вывод пагинации
    echo paginate_links([
        'total' => $custom_query->max_num_pages,
        'current' => $paged,
    ]);
endif;
wp_reset_postdata();

Почему так важно проверять оба параметра?

В зависимости от структуры permalink и контекста (страница, архив, главная) WordPress может передавать номер страницы в paged или page. Игнорируя это, вы рискуете всегда получать первую страницу.

Проверка результата после внедрения

  • Перейдите на страницу с пагинацией, например, /page/2/ или ?paged=2.
  • Убедитесь, что заголовки и контент изменились — отображаются записи со второй страницы.
  • Посмотрите на HTML пагинации — текущая страница должна подсвечиваться.
  • Проверьте консоль браузера на отсутствие JS-ошибок (если пагинация с AJAX).

Частые ошибки и как их исправить

  • Ошибка: Не передан параметр paged в WP_Query.
    Решение: Используйте проверку get_query_var('paged') и передавайте в аргументы запроса.
  • Ошибка: Использование глобального $wp_query без сброса после кастомного запроса.
    Решение: Всегда вызывайте wp_reset_postdata() после работы с WP_Query.
  • Ошибка: Конфликт с плагинами SEO, которые меняют структуру ссылок пагинации.
    Решение: Проверьте настройки плагинов (например, Clearfy Pro) на предмет изменения урлов пагинации и исключите конфликты.
  • Ошибка: Пагинация работает, но при клике на следующую страницу появляется 404.
    Решение: Обновите постоянные ссылки в настройках WordPress (Настройки —> Постоянные ссылки —> Сохранить изменения).

Практические советы по безопасности и производительности

  • Не запрашивайте слишком много постов за один запрос — оптимально от 5 до 10 записей, чтобы не перегружать сервер.
  • Используйте no_found_rows => true в args, если не нужна пагинация, для ускорения запросов.
  • Кешируйте результаты сложных запросов с помощью Transients API или внешних кешей.
  • Проверяйте, чтобы пагинация корректно работала с пользовательскими ролями и правами доступа, если контент ограничен.

Сравнение вариантов реализации пагинации

ВариантПреимуществаНедостатки
Использование WP_Query с правильным pagedПолный контроль над запросом, гибкостьТребует ручной настройки, возможны ошибки если не передать paged
Использование глобального $wp_query (стандартный Loop)Простота, автоматическая работа пагинацииМеньше контроля, нельзя кастомизировать запрос
Плагины пагинации (WP-PageNavi и др.)Удобство, готовые стили и функцииЗависимость от стороннего кода, возможны конфликты

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

⭐⭐⭐⭐⭐
Как сделать пагинацию для категорий в WordPress: практические советы и примеры
17.11.2025
Как добавить пагинацию в WP_Query с уникальным отображением страниц
12.01.2026
Как быстро исправить ошибку 404 при переходе по страницам пагинации в WordPress
06.05.2026
Как использовать параметр paged в WP_Query для правильной пагинации
13.05.2026
Как исправить неработающую пагинацию при комплексных запросах WP_Query
17.05.2026
×

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

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

пишет статьи

готовит SEO

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

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