Как закрыть от индексации страницы архива товаров в WordPress без потери SEO

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

Ниже разберём рабочую схему: какие архивы закрывать, чем отличается noindex от robots.txt, как сделать это через код и как проверить, что поисковик увидел нужные директивы.

Когда архив товаров действительно стоит закрывать

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

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

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

Диагностика проблемы: что именно попало в индекс

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

  • в индексе есть несколько версий одной и той же категории с разными параметрами;
  • в выдаче отображаются страницы пагинации вместо основной категории;
  • в отчёте по страницам есть URL с ?orderby=, ?filter_, /page/2/ и похожими хвостами.

Проверка простая: откройте проблемный URL и посмотрите исходный код страницы. Если там уже стоит noindex, но страница всё равно индексируется, значит поисковик ещё не переобходил её или директива задана не там, где нужно. Если noindex нет, а закрытие делали через robots.txt, это тоже объяснимо: запрет на обход не равен запрету на индексацию, если URL уже известен поисковику.

Что выбрать: noindex, robots.txt или каноникал

ПодходКогда использоватьПлюсМинус
noindexСтраница должна быть доступна пользователю, но не нужна в поискеПрямой сигнал поисковикуНужно дождаться переобхода
robots.txtНужно ограничить обход технических URLСнижает нагрузку на обходНе убирает уже известные URL из индекса
rel=canonicalЕсть основная версия страницы и дубли с параметрамиПомогает склеить сигналыНе всегда достаточно без noindex

Для архивов товаров чаще всего нужен именно noindex, follow или noindex, nofollow в зависимости от структуры сайта. Если задача — убрать из индекса только архивы, но оставить переходы по ссылкам, обычно достаточно noindex, follow.

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

Самый предсказуемый способ — добавить условие в тему или мини-плагин. Так вы не зависите от настроек стороннего SEO-плагина и можете точно управлять архивами товаров.

1. Добавьте мета robots для архивов

Пример ниже закрывает от индексации архивы товаров, страницы пагинации и архивы с параметрами сортировки. Код можно положить в functions.php дочерней темы или в отдельный плагин.

<?php
add_action('wp_head', function () {
    if (is_admin()) {
        return;
    }

    $noindex = false;

    // Архивы товаров и таксономии товаров.
    if (function_exists('is_post_type_archive') && is_post_type_archive('product')) {
        $noindex = true;
    }

    if (function_exists('is_tax') && (is_tax('product_cat') || is_tax('product_tag'))) {
        $noindex = true;
    }

    // Пагинация архивов.
    if (is_paged()) {
        $noindex = true;
    }

    // URL с сортировкой и фильтрами.
    if (!empty($_GET['orderby']) || !empty($_GET['filter_color']) || !empty($_GET['filter_size'])) {
        $noindex = true;
    }

    if ($noindex) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

Здесь есть важный момент: параметры фильтров в примере нужно подстроить под ваш сайт. У вас могут быть другие имена query string, например min_price, rating_filter или собственные параметры плагина фильтрации.

2. Добавьте canonical на основную версию

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

<?php
add_action('wp_head', function () {
    if (is_admin()) {
        return;
    }

    if (is_paged() || !empty($_GET['orderby']) || !empty($_GET['filter_color']) || !empty($_GET['filter_size'])) {
        $canonical = get_pagenum_link(1, false);
        $canonical = remove_query_arg(array('orderby', 'filter_color', 'filter_size'), $canonical);
        echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
    }
}, 2);

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

Как сделать это через SEO-плагин

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

Логика такая: на уровне шаблона или настроек для архивов указываете noindex только для категорий, тегов, пагинации и служебных страниц. После этого проверяете исходный код и убедитесь, что плагин не переопределяет ваши правила.

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

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

После правки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что поисковик видит именно те директивы, которые вы задали.

  1. Откройте проблемный архив в режиме просмотра исходного кода.
  2. Найдите строку <meta name="robots".
  3. Проверьте, что для нужных URL стоит noindex,follow.
  4. Убедитесь, что canonical ведёт на чистую основную версию без параметров.
  5. В Search Console отправьте страницу на переобход, если она уже была в индексе.

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

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

Закрыли через robots.txt вместо noindex

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

Поставили noindex на весь архив товаров

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

Не учли кэш

После изменения кода старый HTML может продолжать отдаваться из кэша. Очистите кэш плагина, серверный кэш и CDN, если он есть. Иначе вы проверите уже неактуальную версию страницы.

Два canonical на одной странице

Один canonical может добавлять тема, второй — SEO-плагин. В итоге поисковик видит конфликт. Оставьте только один источник каноникализации.

Закрыли URL, но оставили внутренние ссылки на него

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

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

  • Проверены URL, которые реально нужно закрыть.
  • Выбрана одна стратегия: noindex, canonical или robots.txt.
  • В исходнике страницы есть только один robots-мета тег.
  • Canonical ведёт на чистый URL без параметров.
  • Кэш очищен на всех уровнях.
  • В Search Console отправлен запрос на переобход.
  • Не пострадали полезные категории и карточки товаров.

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

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

Ещё один практический момент: не генерируйте noindex на каждой странице через тяжёлые проверки и запросы к базе. Условие должно быть дешёвым по ресурсам. В примере выше используются стандартные conditional tags и проверка query string — этого достаточно для большинства сайтов.

Если у вас уже есть SEO-плагин, сначала посмотрите, умеет ли он закрывать архивы без кода. Код нужен там, где стандартных настроек не хватает или требуется точная логика для конкретных параметров URL. В остальных случаях проще и безопаснее использовать штатные настройки, чем поддерживать собственный костыль.

Как удалить базовые виджеты WordPress без ошибок и конфликтов
05.05.2026
Как автоматически удалять неактивные варианты товаров WooCommerce
09.07.2026
Как избежать проблем с производительностью при многоязычности в WordPress
13.12.2025
Как добавить автоматические редиректы после изменения слага записи в WordPress
17.04.2026
Как использовать хук WooCommerce order status changed для автоматизации процессов
20.07.2026