Если у категорий, тегов или архивов записей в WordPress первая страница открывается нормально, а /page/2/ и дальше отдают 404, проблема обычно не в контенте, а в правилах ЧПУ, конфликте с темой, плагином или в неверной настройке пагинации. Это типичный технический сбой: сайт живой, записи есть, но архивы ломаются именно на переходе между страницами.
Ниже — рабочий порядок проверки и исправления. Он подходит для обычных архивов WordPress, а не для WooCommerce или кастомных решений с отдельной логикой.
Как выглядит проблема на практике
Чаще всего симптом один из следующих:
- страница архива открывается, но ссылка на вторую страницу ведёт на 404;
- в адресной строке есть
/page/2/, но WordPress показывает не архив, а страницу ошибки; - после переноса сайта или смены темы пагинация сломалась сразу в нескольких разделах;
- на локальной копии всё работает, а на продакшене — нет;
- 404 появляется только у архивов, а одиночные записи и страницы открываются нормально.
Диагностика: что проверить до правки кода
Сначала нужно понять, где именно ломается маршрут. В WordPress пагинация архивов зависит от правил перезаписи, структуры постоянных ссылок и того, как тема выводит ссылки на страницы архива. Если менять всё подряд, можно только замаскировать причину.
Проверьте постоянные ссылки
Откройте Настройки → Постоянные ссылки и убедитесь, что структура не сброшена в режим по умолчанию после миграции или обновления. Иногда достаточно просто сохранить настройки заново, чтобы WordPress пересобрал правила rewrite.
Если после сохранения проблема исчезает, значит, дело было в устаревших правилах. Это самый простой и безопасный сценарий.
Проверьте конфликт с темой или плагином
Если архивы ломаются только на одной теме, посмотрите, не переопределяет ли она шаблоны архива и пагинации. Для проверки временно переключитесь на стандартную тему WordPress и отключите плагины, которые вмешиваются в ЧПУ, SEO или фильтрацию архивов.
Особенно внимательно смотрите на плагины, которые:
- меняют структуру URL;
- скрывают архивы;
- добавляют фильтры в архивные страницы;
- работают с редиректами и canonical.
Проверьте, не сломан ли шаблон пагинации
В теме может быть собственный вывод архивов через WP_Query. Если разработчик не передал правильный параметр paged, вторая и последующие страницы будут вести себя некорректно. Это уже не проблема rewrite, а ошибка в коде шаблона.
Пошаговое решение
Ниже — порядок, который обычно помогает без лишних экспериментов.
1. Сбросьте правила перезаписи
Самый безопасный первый шаг — пересохранить структуру постоянных ссылок. WordPress заново запишет rewrite rules, и если проблема была в устаревшем наборе правил, пагинация заработает сразу.
// Можно выполнить вручную в админке через сохранение настроек постоянных ссылок.
// Программно flush_rewrite_rules() используют только после регистрации CPT/таксономий,
// а не на каждом запросе.
register_activation_hook(__FILE__, function () {
flush_rewrite_rules();
});
register_deactivation_hook(__FILE__, function () {
flush_rewrite_rules();
});Важно: flush_rewrite_rules() нельзя вызывать на каждом хите. Это тяжёлая операция, и в продакшене она создаст лишнюю нагрузку.
2. Проверьте вывод пагинации в шаблоне
Если архив строится через кастомный запрос, убедитесь, что в аргументах есть paged. Без него WordPress не понимает, какую страницу архива нужно показать.
<?php
$paged = max(1, get_query_var('paged'));
$query = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
]);
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
the_title('<h2>', '</h2>');
endwhile;
echo paginate_links([
'total' => $query->max_num_pages,
'current' => $paged,
]);
wp_reset_postdata();
endif;Если в шаблоне используется query_posts(), это почти всегда плохой знак. Такой подход ломает глобальный запрос и часто приводит к странной пагинации. Лучше заменить его на отдельный WP_Query или работать с основным циклом WordPress.
3. Убедитесь, что архив не перехватывает редирект
Иногда 404 появляется не из-за самого архива, а из-за редиректа, который уводит /page/2/ на несуществующий адрес. Такое бывает после установки SEO-плагинов, плагинов редиректов или при ручной правке .htaccess.
Проверьте, нет ли правил, которые:
- срезают хвост
/page/2/; - перенаправляют архив на канонический URL без пагинации;
- конфликтуют с правилами сервера Nginx или Apache.
4. Если это кастомная таксономия, проверьте её регистрацию
Для пользовательских таксономий и типов записей пагинация архивов зависит от аргументов rewrite. Если там ошибка, WordPress может не собрать правильный маршрут.
register_post_type('news', [
'public' => true,
'has_archive' => true,
'rewrite' => [
'slug' => 'news',
'with_front' => false,
],
'supports' => ['title', 'editor', 'thumbnail'],
]);Если архив у CPT есть, а /page/2/ даёт 404, проверьте, не конфликтует ли slug с уже существующей страницей, рубрикой или другим типом контента.
Когда проблема в теме, а не в WordPress
Если после сброса правил и проверки шаблона ошибка остаётся, ищите её в теме. Частая ситуация: архив выводится не через стандартный шаблон archive.php, а через кастомный файл с ручной выборкой постов. В таком коде легко забыть про paged или неправильно собрать ссылку на следующую страницу.
Ещё один частый случай — тема подменяет основной запрос через pre_get_posts, но не ограничивает область применения. Тогда пагинация ломается не в одном архиве, а сразу в нескольких.
add_action('pre_get_posts', function (WP_Query $query) {
if (is_admin() || ! $query->is_main_query()) {
return;
}
if ($query->is_category() || $query->is_tag() || $query->is_archive()) {
$query->set('posts_per_page', 12);
}
});Здесь важно не трогать админку и не вмешиваться в неосновные запросы. Иначе можно сломать не только пагинацию, но и выборки в виджетах, блоках и REST-запросах.
Как проверить, что исправление сработало
После правок не ограничивайтесь открытием одной страницы. Проверьте несколько сценариев:
- откройте первую страницу архива и вторую страницу подряд;
- проверьте категории, теги и архивы дат, если они используются;
- посмотрите исходный код страницы и убедитесь, что ссылки пагинации ведут на корректные URL;
- проверьте, что сервер отдаёт 200 OK, а не 301/302 в цепочке редиректов;
- если есть кеш, очистите его и повторите тест в режиме инкогнито.
Удобно проверить ответ через curl:
curl -I https://example.com/category/news/page/2/Если всё исправлено, вы должны увидеть нормальный ответ сервера без 404 и без лишней цепочки редиректов. Для более точной проверки откройте URL в браузере с отключённым кешем и посмотрите, совпадает ли адрес в адресной строке с реальной страницей архива.
Частые ошибки и как их исправить
| Ошибка | Почему возникает | Что делать |
|---|---|---|
404 только на /page/2/ | Не передан paged в кастомный запрос | Использовать get_query_var('paged') и передавать его в WP_Query |
| Проблема появилась после переноса сайта | Старые rewrite rules или конфликт slug | Пересохранить постоянные ссылки, проверить совпадения slug |
| Архив ломается только в одной теме | Кастомный шаблон архива или неправильный pre_get_posts | Сравнить с базовой темой и убрать лишние модификации запроса |
| После установки SEO-плагина начались редиректы | Плагин меняет canonical или правила URL | Проверить настройки редиректов и исключить конфликтующие правила |
Что делать, если нужен более чистый технический стек
Если на сайте уже накопились дубли, мусорные архивы, лишние редиректы и тяжёлые настройки SEO-плагинов, иногда удобнее не чинить всё вручную по одному месту, а использовать инструмент, который помогает управлять техническими настройками централизованно. Например, Clearfy Pro от WPShop уместен там, где нужно убрать часть дублей, отключить лишнее и навести порядок в базовой технической конфигурации. Ссылка: Clearfy Pro.
Но даже в этом случае сначала стоит проверить причину 404. Плагин не заменяет диагностику rewrite rules, шаблонов и кастомных запросов.
Практические советы по безопасности и производительности
Когда проблема решена, не оставляйте сайт в режиме постоянных экспериментов. Любая правка .htaccess, шаблонов и функций темы должна идти через резервную копию и тестовую копию сайта.
- не вызывайте
flush_rewrite_rules()на каждом запросе; - не используйте
query_posts()в новых шаблонах; - проверяйте пагинацию после обновления темы и SEO-плагинов;
- если есть кеш страниц, очищайте его после изменения rewrite или шаблонов;
- не правьте правила редиректов вслепую, если на сайте уже есть Nginx/Apache конфигурация.
Если архивы генерируются тяжело, посмотрите на количество записей на странице и на то, не тянет ли шаблон лишние поля, изображения или внешние запросы. Иногда 404 — это только верхушка проблемы, а реальная нагрузка сидит в шаблоне архива.
В итоге рабочая схема простая: сначала пересобрать правила, потом проверить шаблон и paged, затем исключить конфликты с плагинами и редиректами. Если идти в этом порядке, обычно удаётся найти причину без лишнего переписывания сайта.