Как исправить ошибку 404 при пагинации WooCommerce с кастомными WP_Query

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

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

Основные признаки:

  • Переход на страницу 2 и далее по пагинации выдаёт 404 ошибку.
  • URL пагинации корректный, но контент не подгружается.
  • Кастомный WP_Query используется для вывода товаров WooCommerce (post_type = 'product').

Причина — неправильное использование параметра paged или отсутствие вызова глобальной пагинации WooCommerce.

Почему возникает ошибка

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

  • Передавать правильное значение paged, получаемое из глобального запроса.
  • Не нарушать правила rewrite WooCommerce.
  • Использовать pre_get_posts для корректной настройки основного запроса, если это возможно.

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

Вот рабочий пример кода для шаблона категории товаров WooCommerce с кастомной пагинацией:

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

$args = [
    'post_type' => 'product',
    'posts_per_page' => 12,
    'paged' => $paged,
    'tax_query' => [
        [
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => 'your-category-slug',
        ],
    ],
];
$query = new WP_Query($args);

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        wc_get_template_part( 'content', 'product' );
    }
    
    echo paginate_links([
        'total' => $query->max_num_pages,
        'current' => $paged,
        'type' => 'list',
    ]);
} else {
    echo '<p>Товары не найдены.</p>';
}
wp_reset_postdata();

Обратите внимание, что ключевой момент — получение paged из глобального запроса через get_query_var('paged'). Это гарантирует, что пагинация будет работать корректно.

Исправляем пермалинки и правила rewrite

После внесения изменений в запрос и шаблон обязательно:

  • Перейдите в Настройки > Постоянные ссылки и нажмите «Сохранить изменения» без изменений — это сбросит правила rewrite.
  • Очистите кэш сайта и браузера.

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

Чтобы убедиться, что ошибка исправлена, сделайте следующее:

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

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

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

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

  • При большом количестве товаров используйте posts_per_page с разумным лимитом (например, 12-24), чтобы не перегружать сервер.
  • Используйте AJAX пагинацию для улучшения UX, но соблюдайте настройку paged и nonce для безопасности.
  • Внимательно фильтруйте запросы с помощью tax_query и meta_query, чтобы избежать избыточных данных.
  • Если используете плагины кеширования, убедитесь, что они корректно обрабатывают пагинацию WooCommerce.

Сравнение методов вывода товаров с пагинацией

МетодПлюсыМинусыПрименимость
Стандартный WooCommerce LoopАвтоматическая пагинация, совместимостьМеньше гибкости в кастомизацииПодходит для большинства сайтов
Кастомный WP_Query с правильным pagedМаксимальная гибкость, фильтрацияТребует правильной настройки, риски ошибокДля кастомных шаблонов и фильтров
Плагины пагинации (WP-PageNavi и др.)Простота внедрения, стильные интерфейсыМожет конфликтовать с кастомными запросамиКогда нужна кастомная навигация

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

⭐⭐⭐⭐⭐
Как добавить AJAX пагинацию в WP-PageNavi с поддержкой кеширования
04.01.2026
Как исправить неработающую пагинацию в WooCommerce при кастомных WP_Query
31.05.2026
Как сделать пагинацию для кастомных статусов записей в WordPress
01.03.2026
Как сделать пагинацию для постов в логических категориях WordPress
07.04.2026
Как исправить ошибку 404 при пагинации WooCommerce с кастомными WP_Query
03.07.2026
×

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

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

пишет статьи

готовит SEO

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

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