Как исправить 404 на страницах архива и таксономии в WordPress

|

404 на страницах рубрик, меток, архивов произвольных типов записей и таксономий обычно появляются не из-за «битых ссылок» как таковых, а из-за несоответствия между зарегистрированной таксономией, шаблоном темы и правилами пермалинков. На практике это часто всплывает после миграции, смены темы, отключения плагина или правки register_post_type() и register_taxonomy().

Если у вас часть архивов открывается, а часть отдает 404, не начинайте с переустановки WordPress. Сначала проверьте, что именно сломалось: правила перезаписи, сам объект таксономии, шаблон архива или конфликт с плагином, который регистрирует тот же slug.

Как понять, где именно возникает 404

Симптомы похожи, но причины разные. Если URL существует, а страница отдает 404, это может быть:

Быстрая диагностика в админке

Начните с простого:

  1. Откройте Настройки → Постоянные ссылки и просто нажмите «Сохранить изменения».
  2. Проверьте, открываются ли стандартные архивы рубрик и меток.
  3. Если проблема только у одного CPT или одной таксономии, временно переключитесь на стандартную тему и отключите плагины, которые регистрируют контентные типы.
  4. Очистите кеш страницы и объектный кеш, если он есть.

Если после пересохранения пермалинков проблема ушла, значит дело было в rewrite rules. Если нет — нужно смотреть регистрацию сущностей и шаблоны.

Пошаговое решение для архивов и таксономий

1. Проверьте регистрацию CPT и таксономии

Частая ошибка — таксономия создана, но не привязана к нужному типу записи, либо slug меняли в одном месте и забыли в другом. Пример корректной регистрации:

add_action('init', function () {
    register_post_type('book', [
        'label' => 'Книги',
        'public' => true,
        'has_archive' => true,
        'rewrite' => ['slug' => 'books'],
        'supports' => ['title', 'editor', 'thumbnail'],
        'show_in_rest' => true,
    ]);

    register_taxonomy('book_genre', ['book'], [
        'label' => 'Жанры',
        'public' => true,
        'hierarchical' => true,
        'rewrite' => ['slug' => 'book-genre'],
        'show_in_rest' => true,
    ]);
});

Здесь важно, чтобы 'book' был в массиве объектов для register_taxonomy(). Если этого нет, архив таксономии может существовать в базе, но WordPress не будет корректно строить маршрут.

2. Обновите rewrite rules после изменений

Если вы меняли rewrite, has_archive или slug таксономии, правила нужно обновить. Вручную это делается через сохранение постоянных ссылок. Если вы разворачиваете сайт на staging и переносите на production, лучше не рассчитывать на память администратора.

Для одноразового сброса правил можно использовать такой подход в плагине или временно в теме:

add_action('init', function () {
    if (get_option('my_flush_rewrite_rules_once') !== 'done') {
        flush_rewrite_rules(false);
        update_option('my_flush_rewrite_rules_once', 'done');
    }
});

Этот код нельзя держать постоянно без контроля: flush_rewrite_rules() тяжелая операция, и на каждом запросе ее вызывать нельзя.

3. Убедитесь, что шаблон архива существует

Если у CPT или таксономии есть маршрут, но тема не умеет его выводить, WordPress может показать 404 или не тот шаблон. Для таксономий проверьте наличие:

Если тема кастомная, откройте шаблон и убедитесь, что в нем есть основной цикл:

<?php if (have_posts()) : ?>
    <header class="archive-header">
        <h1><?php single_term_title(); ?></h1>
        <?php the_archive_description('<div class="archive-description">', '</div>'); ?>
    </header>

    <div class="archive-list">
        <?php while (have_posts()) : the_post(); ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            </article>
        <?php endwhile; ?>
    </div>

    <?php the_posts_pagination(); ?>
<?php else : ?>
    <p>Записей не найдено.</p>
<?php endif; ?>

4. Проверьте конфликт slug

Если у страницы, рубрики и таксономии одинаковый slug, WordPress может выбрать не тот маршрут. Например, /news/ может быть страницей, архивом рубрики или архивом CPT в зависимости от порядка правил и настроек.

Что делать:

Когда проблема в плагине или теме

Если 404 появились после установки SEO-плагина, плагина фильтров или кастомного каталога, проверьте, не перехватывает ли он запросы через pre_get_posts, template_include или собственные rewrite rules. Нередко плагин добавляет красивый URL, но после отключения старые ссылки продолжают жить в индексе и ведут в никуда.

Для проверки временно отключите подозрительный плагин и откройте тот же URL. Если архив заработал, ищите конфликт в регистрации маршрута или шаблона.

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

После исправлений проверьте не только сам URL, но и соседние сценарии:

Удобно проверить ответ сервера через curl:

curl -I https://example.com/book-genre/fiction/
curl -I https://example.com/books/
curl -I https://example.com/book-genre/fiction/page/2/

В ответе должен быть 200 OK, а не 404 Not Found. Если первая страница открывается, а пагинация нет, значит проблема уже не в регистрации таксономии, а в правилах перезаписи или шаблоне пагинации.

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

Сохранили постоянные ссылки, но 404 остались

Значит, проблема не только в rewrite rules. Проверьте slug, шаблон и регистрацию таксономии. Иногда помогает только полная пере-регистрация объекта после смены темы или плагина.

Таксономия есть в админке, но архив не открывается

Обычно это означает, что таксономия зарегистрирована без нужного объекта или с неверным rewrite. Также проверьте, не отключен ли public или publicly_queryable.

404 только на второй странице архива

Это типичный симптом конфликта с пагинацией или кастомным rewrite. Проверьте, не перехватывает ли тема запросы через query_vars и не ломает ли плагин структуру ссылок.

После смены темы архивы исчезли

Значит, старая тема могла регистрировать CPT или таксономию сама. Если регистрацию не вынесли в плагин, WordPress теряет объект вместе с темой. Это плохая архитектура: контентный тип должен жить отдельно от шаблона.

Чек-лист перед публикацией исправления

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

Не держите flush_rewrite_rules() в коде, который исполняется на каждом запросе. Если нужно автоматизировать сброс после активации плагина, делайте это в хук активации, а не в init. Для темы или плагина это безопаснее и дешевле по ресурсам.

Если архивов много, а часть из них не нужна для индексации, лучше закрыть их от поисковиков через noindex на уровне SEO-плагина или шаблона, чем оставлять пустые страницы с 404. Но сначала убедитесь, что вы не скрываете полезный контент вместе с мусором.

Если вам нужно системно чистить дубли, пустые архивы и технические хвосты, имеет смысл посмотреть в сторону инструментов вроде Clearfy Pro: он помогает закрывать типовые SEO-дубли и убирать лишние элементы без ручной правки каждой темы. Подробности есть на странице плагина.

Главная проверка простая: если архив открывается напрямую, пагинация работает, а старые URL не конфликтуют с новыми, значит маршрут восстановлен корректно. Если нет — возвращайтесь к регистрации объекта и slug, а не к косметике в шаблоне.

Как создать собственный шорткод в WordPress с применением кода
20.11.2025
Как отключить Emoji в WordPress: эффективные методы и примеры кода
11.02.2026
Как избавиться от ошибки 429 Too Many Requests в WordPress при использовании REST API
14.07.2026
Как автоматически оценивать комментарии в WordPress с помощью Expert Review
18.02.2026
Как эффективно удалить пустые записи в базе данных WordPress
17.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее