Диагностика проблемы ошибки 404 в пагинации WooCommerce
Ошибка 404 при переходе по страницам пагинации в WooCommerce — частая проблема, которая возникает из-за неправильной работы ЧПУ (человеко-понятных URL) или конфликтов с правилами перезаписи (rewrite rules). Обычно это проявляется, когда первая страница категории или архива товара работает корректно, а при клике на ссылки пагинации открывается страница с ошибкой 404.
Для диагностики выполните следующие шаги:
- Проверьте, используются ли ЧПУ для товаров и категорий в настройках
Настройки > Постоянные ссылки. - Очистите кэш сайта и браузера, чтобы исключить кеширование старых URL.
- Попробуйте переключить тему на стандартную (например, Storefront) и отключить все плагины, кроме WooCommerce, чтобы выявить конфликт.
- Проверьте настройки пагинации в шаблоне: корректно ли передаётся параметр
pagedв запросы WP_Query. - Просмотрите файл
.htaccessи убедитесь, что там присутствуют стандартные правила перезаписи WordPress.
Пошаговое решение ошибки 404 при пагинации WooCommerce
1. Сбросьте постоянные ссылки
В админке WordPress перейдите в Настройки > Постоянные ссылки и просто нажмите кнопку «Сохранить изменения» без изменения настроек. Это сбросит правила перезаписи.
2. Проверьте и исправьте параметры WP_Query для пагинации
Если вы используете кастомный запрос для вывода товаров, убедитесь, что параметр paged корректно установлен. Пример правильного запроса:
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 12,
'paged' => $paged
];
$query = new WP_Query($args);Без параметра paged пагинация работать не будет.
3. Убедитесь в правильности шаблонов WooCommerce
Если вы переопределяете шаблоны WooCommerce в теме, проверьте, что в файлах archive-product.php и content-product.php вызовы пагинации реализованы через стандартные функции WooCommerce:
woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {
woocommerce_pagination();
}
woocommerce_product_loop_end();4. Проверьте файл .htaccess
Стандартный файл для WordPress должен содержать примерно такой блок:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressЕсли файл отсутствует или повреждён, создайте или восстановите его.
5. Отключите плагины, влияющие на ЧПУ и кеширование
Плагины для SEO, кеширования или оптимизации URL (например, Clearfy, WP Rocket, Autoptimize) иногда могут ломать пагинацию. Отключите их временно и проверьте работу пагинации.
Проверка результата после внедрения решения
После выполнения шагов:
- Перейдите в категорию товаров на вашем сайте.
- Кликните на номера страниц пагинации (2, 3 и т.д.).
- Убедитесь, что открываются соответствующие страницы с товарами, без ошибки 404.
- Проверьте, что URL содержит правильный параметр
/page/2/и что товары корректно загружаются. - Если есть кеширование, очистите кэш и повторите проверку.
Частые ошибки и их исправление
- Отсутствие параметра paged в WP_Query. Решение: всегда указывайте
'paged' => get_query_var('paged', 1)при кастомных запросах товаров. - Неправильные правила перезаписи в .htaccess. Решение: сбросьте постоянные ссылки и восстановите стандартный .htaccess.
- Конфликт с плагинами кеширования. Решение: отключите кеширование для страниц пагинации WooCommerce или настройте исключения.
- Кастомные шаблоны WooCommerce без вызова стандартной пагинации. Решение: используйте функцию
woocommerce_pagination()для вывода навигации. - Использование параметра
pageвместоpaged. Решение: в WP_Query всегда должен быть параметрpagedдля пагинации.
Практические советы по безопасности и производительности
- Избегайте дублирования запросов: используйте стандартные хуки WooCommerce для пагинации, чтобы избежать избыточных запросов к базе.
- Отключите кеширование для страниц пагинации WooCommerce, чтобы пользователи всегда видели актуальные товары и наличие.
- Не меняйте вручную правила перезаписи, если не уверены — используйте встроенный сброс постоянных ссылок.
- Регулярно обновляйте WooCommerce и тему, чтобы избежать несовместимостей, влияющих на пагинацию.
Сравнение вариантов решения ошибки 404 пагинации WooCommerce
| Способ | Описание | Плюсы | Минусы |
|---|---|---|---|
| Сброс постоянных ссылок | Перегенерация правил перезаписи WordPress | Простое и быстрое решение | Не всегда помогает при кастомном коде |
| Правильное использование параметра paged | Корректировка WP_Query | Гарантирует работу пагинации при кастомных запросах | Требует правок в коде |
| Использование стандартных WooCommerce шаблонов | Добавление функции woocommerce_pagination() | Интегрировано с WooCommerce | Нужна корректировка темы |
| Отключение конфликтующих плагинов | Выявление и устранение конфликтов | Обеспечивает стабильность | Может снизить функциональность сайта |