wpfind.ru wordpress wpfind.ru

Как отключить архивы товаров без 404 и дублей в WordPress

Сценарий знакомый: в WordPress есть тип записи с товарами или каталогом, но отдельные архивы по нему не нужны. При этом после отключения архива появляются 404, ломаются хлебные крошки, а в индексе остаются старые URL. Ниже — рабочая схема, как убрать архив без побочных эффектов.

Когда архив лучше отключить, а не оставлять пустой страницей

Если архив товаров не несёт самостоятельной ценности, а все переходы идут через категории, поиск или фильтры, отдельная страница архива часто только создаёт дубли. Типичные признаки:

  • архив открывается, но в нём дублируются карточки из категорий;
  • в выдаче есть и архив, и страницы таксономий с теми же товарами;
  • внутренние ссылки ведут на архив, хотя пользователю нужен каталог по категории;
  • после удаления архива остаются старые URL в индексе и в sitemap.

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

Диагностика: что именно ломается после отключения

Перед правкой кода проверьте, где используется архивный URL. Обычно проблемы видны в трёх местах:

  1. меню и хлебные крошки;
  2. шаблоны темы, где ссылка на архив строится через get_post_type_archive_link();
  3. карта сайта и старые проиндексированные страницы.

Если архив отключить только через регистрацию типа записи, WordPress перестанет генерировать архивный URL, но ссылки в теме могут остаться. Тогда пользователь увидит 404, а поисковик — цепочку битых ссылок.

Что проверить до изменений

  • есть ли у типа записи параметр has_archive;
  • используется ли архив в хлебных крошках;
  • есть ли отдельный шаблон archive-{post_type}.php;
  • есть ли старые URL в Search Console или логах 404;
  • не участвует ли архив в XML-карте сайта.

Пошаговое решение через код

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

// functions.php или свой мини-плагин
add_action('init', function () {
    register_post_type('product_item', [
        'label'       => 'Товары',
        'public'      => true,
        'has_archive' => false,
        'rewrite'     => [
            'slug'       => 'product-item',
            'with_front' => false,
        ],
        'supports'    => ['title', 'editor', 'thumbnail'],
    ]);
}, 20);

Если архив уже был доступен и успел попасть в индекс, добавьте редирект. Для этого лучше использовать template_redirect, чтобы не плодить 404.

add_action('template_redirect', function () {
    if (is_post_type_archive('product_item')) {
        wp_redirect(home_url('/catalog/'), 301);
        exit;
    }
});

Адрес /catalog/ замените на реальную страницу, которая заменяет архив по смыслу. Если подходящей страницы нет, лучше оставить 404, чем вести всех на нерелевантную главную.

Если архив нужен для админки, но не для посетителей

Иногда архив нужен как техническая сущность: в админке удобно видеть тип записи, но на фронтенде он не нужен. Тогда не отключайте тип записи полностью. Вместо этого:

  • оставьте public в нужном режиме;
  • скройте архив редиректом;
  • проверьте, что ссылки на архив не выводятся в шаблонах;
  • уберите страницу из sitemap, если она туда попадает.

Если используете SEO-плагин, проверьте настройки индексации архивов и таксономий. Но не полагайтесь только на noindex: URL всё равно может продолжать жить во внутренней перелинковке.

ПодходПлюсыМинусы
Оставить архив и поставить noindexБыстроURL остаётся доступным, дубли и внутренние ссылки никуда не деваются
Отключить архив через has_archiveЧисто на уровне WPНужно проверить шаблоны и старые ссылки
Редирект со старого архива на заменуСохраняет пользователей и часть весаНужна релевантная целевая страница

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

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

  1. Откройте старый архивный URL напрямую и убедитесь, что он отдаёт 301 или 404 по выбранной логике.
  2. Проверьте хлебные крошки: ссылка на архив не должна вести на несуществующую страницу.
  3. Посмотрите исходный код страницы и убедитесь, что архив не попадает в rel="canonical" как основной адрес, если он отключён.
  4. Проверьте XML-карту сайта: старый архив не должен там оставаться.
  5. Прогоните сайт через отчёт по 404 в логах или Search Console после переобхода.

Если редирект настроен правильно, старый URL должен открываться с кодом 301, а целевая страница — быть релевантной теме архива. Если вместо этого вы видите цепочку редиректов, сократите её до одного шага.

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

1. Архив отключили, но ссылки остались в теме

Это самая частая ситуация. Исправление простое: найдите вызовы get_post_type_archive_link() и замените их на ссылку на реальную страницу каталога или уберите вывод ссылки совсем.

2. Поставили редирект на главную

Так делать можно только если архив действительно не имеет замены. В остальных случаях это плохой сигнал и для пользователей, и для поисковиков. Лучше вести на категорию, раздел каталога или страницу с фильтрами.

3. Оставили архив доступным, но закрыли его только в robots.txt

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

4. Не обновили постоянные ссылки

После изменения параметров rewrite иногда нужно просто пересохранить структуру постоянных ссылок в админке. Если этого не сделать, старые правила могут продолжать работать некорректно.

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

Если правите код не в теме, а в отдельном мини-плагине, это безопаснее: обновление темы не затрёт изменения. Для редиректов и отключения архивов лучше не использовать случайные сниппеты из интернета без проверки на вашем типе записи.

  • не редактируйте ядро WordPress;
  • не вносите правки напрямую в коммерческую тему без бэкапа;
  • перед выкладкой проверьте код на staging-окружении;
  • после изменений очистите кеш страницы и объектный кеш, если он есть;
  • если сайт большой, проверьте логи 404 в течение нескольких дней после релиза.

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

В итоге задача сводится к трём проверяемым шагам: отключить архив на уровне типа записи, убрать ссылки на него из шаблонов и настроить понятный редирект или замену. Если после этого старый URL не даёт 404, не появляется в sitemap и не светится в хлебных крошках, решение можно считать рабочим.

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее