Как исправить неработающую пагинацию в WooCommerce при кастомных WP_Query

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

При создании кастомных запросов на основе WP_Query для вывода товаров WooCommerce часто возникает проблема: пагинация либо не появляется, либо при переключении страниц выдаёт 404 ошибку или показывает неправильное количество товаров.

Основная причина — неправильная обработка параметра paged и конфликт с основным запросом WooCommerce, который отвечает за архив товаров. WooCommerce использует собственную логику для пагинации, и если её не учесть, кастомный запрос не будет корректно взаимодействовать с URL и навигацией.

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

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

Важно правильно получить текущую страницу, учитывая разные варианты URL:

$paged = max( 1, get_query_var('paged'), get_query_var('page') );

2. Настройка параметров WP_Query с учётом пагинации

Пример базового запроса товаров WooCommerce с пагинацией:

$args = [
    'post_type' => 'product',
    'posts_per_page' => 12, // количество товаров на странице
    'paged' => $paged,
    // добавьте другие параметры по необходимости
];
$query = new WP_Query($args);

3. Использование правильной функции вывода пагинации

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

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

4. Обработка пермалинков и правил перезаписи

Если используются красивые ссылки (пермалинки), убедитесь, что правила перезаписи обновлены: зайдите в Настройки > Постоянные ссылки и просто нажмите «Сохранить изменения». Это сбросит правила и устранит 404 ошибки при пагинации.

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

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

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

  • Пагинация всегда показывает первую страницу: проверьте, правильно ли вы получаете $paged. Иногда нужно использовать get_query_var('page') вместо paged в зависимости от контекста.
  • Ошибка 404 при переходе по страницам: сбросьте правила перезаписи (перейдите в настройки постоянных ссылок и сохраните без изменений).
  • Неправильное количество страниц в пагинации: убедитесь, что posts_per_page и max_num_pages берутся из того же WP_Query, который выводит товары.
  • Конфликты с основным запросом WooCommerce: избегайте изменения глобального запроса, используйте отдельный WP_Query и не забывайте сбрасывать постдату после вывода wp_reset_postdata().

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

  • Используйте кэширование (например, Object Cache или transient API) для кастомных запросов, чтобы снизить нагрузку на базу при больших каталогах товаров.
  • Всегда проверяйте и экранируйте входящие параметры (например, paged) перед использованием в запросах.
  • Избегайте избыточных запросов — ограничивайте выборку товаров только необходимыми полями с помощью fields в WP_Query.

Сравнение вариантов решения проблемы пагинации в WooCommerce с кастомными запросами

МетодПлюсыМинусы
Использование базового WP_Query с корректным paged Простой, контролируемый код, гибкость Необходимо вручную настраивать пагинацию и URL
Перезаписывать главный запрос с помощью pre_get_posts Интеграция с WooCommerce, автоматическая работа пагинации Риск конфликтов, сложнее отлаживать
Использовать плагины пагинации для WooCommerce Быстро, готовые решения Меньше контроля, возможны конфликты и нагрузка

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

⭐⭐⭐⭐⭐
Как использовать параметр paged в WP_Query для правильной пагинации
13.05.2026
Как использовать WP-PageNavi для пагинации кастомных записей с фильтрами
10.02.2026
Как реализовать AJAX-пагинацию в WooCommerce с обновлением корзины и фильтров
23.05.2026
Как использовать хуки пагинации в WordPress: практические примеры и советы
12.11.2025
Как сделать пагинацию для многоязычных сайтов WordPress
18.02.2026
×
WordPress
дай сайту суперсилу!

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

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