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

Диагностика проблемы с пагинацией WP_Query

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

Для диагностики выполните следующие шаги:

  • Проверьте, передаётся ли в запрос переменная paged, отвечающая за номер текущей страницы.
  • Убедитесь, что в URL действительно есть параметр /page/2/ и он корректно обрабатывается.
  • Проверьте, не конфликтует ли ваш запрос с основным глобальным query WordPress.
  • Включите режим отладки WordPress и посмотрите, нет ли ошибок в логах.

Пошаговое решение проблемы с пагинацией в WP_Query

1. Правильное получение текущей страницы

Для корректной работы пагинации нужно получить текущий номер страницы из запроса. В шаблонах это делается так:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

2. Использование $paged в параметрах WP_Query

Передайте полученный номер страницы в параметры запроса:

$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'paged' => $paged
);
$query = new WP_Query($args);

3. Вывод пагинации через paginate_links()

Для отображения пагинации используйте функцию paginate_links() с правильными параметрами:

echo paginate_links(array(
    'total' => $query->max_num_pages,
    'current' => $paged,
    'format' => '/page/%#%/',
    'prev_text' => '« Назад',
    'next_text' => 'Вперёд »'
));

4. Использование wp_reset_postdata()

После кастомного запроса обязательно сбрасывайте глобальные данные:

wp_reset_postdata();

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

Чтобы проверить, что пагинация работает:

  • Перейдите на страницу с вашим кастомным запросом.
  • Проверьте, что URL меняется на /page/2/ при переходе на следующую страницу.
  • Убедитесь, что при переходе на другую страницу меняются записи, а не повторяются те же.
  • Включите просмотр исходного кода и проверьте, что ссылки пагинации формируются корректно.

Частые ошибки и способы их исправления

  • Ошибка: Не передан параметр paged в WP_Query.
    Исправление: Используйте $paged = get_query_var('paged') ?: 1; и передавайте в запрос.
  • Ошибка: Использование page вместо paged в параметрах запроса.
    Исправление: Для пагинации в архивах и списках постов нужно использовать именно paged.
  • Ошибка: Конфликт с основным запросом WordPress.
    Исправление: В некоторых случаях лучше использовать pre_get_posts для изменения главного запроса вместо нового WP_Query.
  • Ошибка: Неправильный формат URL пагинации.
    Исправление: Убедитесь, что параметр format в paginate_links() соответствует структуре постоянных ссылок.

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

  • Используйте параметр no_found_rows => true в WP_Query, если пагинация не нужна — это ускорит запрос.
  • Для SEO убедитесь, что на страницах пагинации есть правильные мета-теги, например, rel="next" и rel="prev".
  • Кешируйте результаты запросов с пагинацией с помощью Transients API или плагинов кеширования.
  • Используйте ЧПУ (человеко-понятные URL) для страниц пагинации, чтобы избежать дублирования контента.

Сравнение методов реализации пагинации для WP_Query

МетодПлюсыМинусы
Кастомный WP_Query с pagedПолный контроль над запросом, гибкость выводаТребует правильной настройки, возможны ошибки с URL
Использование pre_get_postsИзменяет основной запрос, меньше конфликтовМеньше гибкости, надо хорошо понимать хуки WP
Плагины пагинации (WP-PageNavi и др.)Упрощают вывод и стилизациюМогут конфликтовать с кастомными запросами

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

⭐⭐⭐⭐⭐
Как сделать отображение пагинации в WordPress для таблиц
05.12.2025
Как добавить пагинацию в WP_Query с уникальным отображением страниц
12.01.2026
Как исправить неработающую пагинацию при пользовательских запросах WP_Query в WordPress
28.04.2026
Как исправить несоответствие пагинации при использовании WP_Query в WordPress
21.04.2026
Как добавить пагинацию в WordPress для комплексных запросов с таксономиями и meta-данными
11.04.2026
×
WordPress
дай сайту суперсилу!

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

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