Как закрыть от индексации страницы поискового фильтра в WordPress

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

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

Как понять, что проблема именно в фильтре, а не в шаблоне

Сначала нужно отличить нормальные страницы архива от технических дублей. Если у вас в URL меняются только параметры вроде ?color=red, ?sort=price, ?brand=..., а контент на странице почти не меняется, это типичный кандидат на закрытие от индексации.

Что смотреть в первую очередь

  • отчёт «Страницы» в Google Search Console: много URL с параметрами и низким числом показов;
  • логи сервера или отчёт краулера: бот ходит по комбинациям фильтров;
  • HTML страницы: есть ли у фильтра собственный <title>, meta robots и канонический URL;
  • поведение пагинации: не создаёт ли фильтр отдельные страницы 2, 3, 4 и так далее.

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

Диагностика: какие URL реально нужно закрывать

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

Тип URLЧто делатьКомментарий
Основной архив категорииОставить индексируемымЭто нормальная посадочная страница
Фильтр с параметрамиЗакрыть от индексацииЧасто дублирует основной архив
Сортировка, вид отображения, служебные параметрыНе индексировать и по возможности не сканироватьНапример, sort, view, orderby

Если у вас фильтр построен на AJAX и URL не меняется, задача проще: поисковик не видит отдельную страницу, но всё равно стоит проверить, не появляются ли отдельные адреса через историю браузера или JS-роутинг.

Пошаговое решение через код темы или мини-плагин

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

Ниже пример: если в URL есть определённые параметры фильтра, мы ставим noindex,follow и каноникал на чистую страницу архива без параметров.

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

    $filter_params = array('color', 'brand', 'size', 'sort', 'orderby', 'view');
    $has_filter = false;

    foreach ($filter_params as $param) {
        if (isset($_GET[$param]) && $_GET[$param] !== '') {
            $has_filter = true;
            break;
        }
    }

    if (!$has_filter) {
        return;
    }

    echo '<meta name="robots" content="noindex,follow" />' . "\n";

    $canonical = home_url(add_query_arg(array(), $GLOBALS['wp']->request));
    $canonical = strtok($canonical, '?');
    echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}, 1);

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

Если фильтр живёт в таксономии

Иногда фильтр не через GET-параметры, а через отдельные страницы архива по таксономии или меткам. Тогда логика та же: полезный архив оставляем, а страницы, которые повторяют его содержимое без добавленной ценности, закрываем через noindex и нормальный canonical.

Для таксономий можно использовать фильтр wp_robots, если нужно точечно менять robots-правила без ручной вставки в шаблон:

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_tax('brand') && isset($_GET['sort'])) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

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

Когда достаточно canonical, а когда нужен noindex

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

СценарийРешениеПочему
Одна сортировкаCanonical на базовую страницуСигнал о главной версии обычно достаточен
Много фильтров и комбинацийnoindex,follow + canonicalСнижается шанс индексации мусорных URL
Служебные параметрыЗакрыть от сканирования на уровне robots.txt или логики генерации ссылокЧтобы бот не тратил обход на бесполезные адреса

Важно: robots.txt не удаляет URL из индекса, если он уже известен поисковику. Он только ограничивает обход. Поэтому для уже проиндексированных страниц обычно нужен именно noindex или редирект, если страница больше не нужна.

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

После правок не стоит сразу ждать мгновенного эффекта. Сначала проверьте, что HTML действительно изменился на нужных страницах.

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

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

Как быстро убедиться, что бот видит нужный вариант

Можно проверить заголовки и HTML через curl:

curl -I https://example.com/category/shoes/?sort=price
curl -s https://example.com/category/shoes/?sort=price | grep -i "robots\|canonical"

Если в ответе нет нужного noindex или canonical всё ещё указывает на параметрический URL, значит условие в коде срабатывает не там, где нужно, либо страницу переписывает другой плагин.

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

  • Ставят noindex на весь архив. Причина обычно в слишком широком условии вроде is_archive() без проверки параметров. Исправление: ограничьте логику конкретными GET-параметрами или конкретной таксономией.
  • Дублируют canonical вручную и через SEO-плагин. В итоге в HTML два канонических URL, и поисковик может игнорировать оба. Исправление: оставьте один источник генерации canonical.
  • Закрывают URL только в robots.txt. Это не убирает уже известные страницы из индекса. Исправление: добавьте noindex или редирект, если страница больше не нужна.
  • Не чистят кэш. На фронте остаётся старая версия мета-тегов. Исправление: сбросьте кэш плагина, CDN и серверный кэш.
  • Закрывают полезные страницы фильтра, которые реально собирают трафик. Такое бывает у посадочных страниц по брендам или цветам. Исправление: сначала проверьте статистику и спрос, потом закрывайте только мусорные комбинации.

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

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

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

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

В итоге рабочая схема простая: определяете, какие параметры создают мусор, закрываете их от индексации точечно, оставляете canonical на основную страницу и проверяете результат в HTML и Search Console. Если после этого в индексе всё ещё остаются лишние URL, проблема обычно не в мета-тегах, а в том, что фильтр продолжает активно генерировать новые адреса.

Как закрыть от индексации страницы поискового фильтра в WordPress
14.08.2026
Как закрыть от индексации отдельные страницы автора в WordPress
24.08.2026
Как исправить 404 и permission error в WordPress REST API
27.08.2026
Как отключить XML-RPC в WordPress и не сломать нужные интеграции
30.08.2026
Почему sitemap.xml не обновляется в WordPress и как это исправить
20.08.2026