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

Если на сайте появились десятки или сотни URL с параметрами вроде ?filter_color=, ?orderby=, ?sort=, поисковик начинает тратить обход на мусорные комбинации. В результате в индексе оказываются почти одинаковые страницы, а нормальные посадочные получают меньше внимания. Это типичная проблема для каталогов, блогов с фильтрами и любых тем, где параметры меняют выдачу без создания отдельной страницы.

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

Когда проблема уже есть: как это диагностировать

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

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

  • Отчёты поисковой консоли по страницам с параметрами и дублирующимся заголовкам.
  • Логи обхода, если они доступны на сервере или в аналитике.
  • Результаты поиска по сайту: часто фильтры создают URL с ?s=, ?orderby=, ?filter_*, ?page=.
  • HTML-код страниц фильтрации: есть ли там каноникал, robots meta и корректные ссылки на базовую страницу.

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

Что именно закрывать: параметры, сортировку или весь шаблон

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

ПодходКогда подходитМинус
Robots meta noindexДля страниц с параметрами, которые должны открываться пользователю, но не индексироватьсяНужно аккуратно исключать только нужные URL
Canonical на чистый URLЕсли параметр меняет только сортировку или вид, а не смысл страницыНе всегда достаточно, если поисковик уже успел проиндексировать дубли
Запрет на уровне сервера/правилДля явно мусорных параметров и технических URLМожно случайно сломать полезные сценарии

На практике чаще всего используют связку: для параметрических страниц ставят noindex,follow, а canonical указывает на чистую версию URL.

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

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

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

    $params = [
        'orderby',
        'order',
        'sort',
        'filter_color',
        'filter_size',
        'filter_brand',
        'min_price',
        'max_price',
    ];

    foreach ($params as $param) {
        if (isset($_GET[$param]) && $_GET[$param] !== '') {
            echo '<meta name="robots" content="noindex,follow" />' . "\n";
            break;
        }
    }
}, 1);

Этот вариант простой, но рабочий. Он не трогает чистые страницы и срабатывает только при наличии параметров. Если у вас свои имена фильтров, добавьте их в массив.

Как сделать canonical на базовую страницу

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

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_admin() || !is_singular()) {
        return $canonical;
    }

    $tracked_params = ['orderby', 'order', 'sort', 'filter_color', 'filter_size', 'filter_brand', 'min_price', 'max_price'];

    foreach ($tracked_params as $param) {
        if (isset($_GET[$param]) && $_GET[$param] !== '') {
            return get_permalink($post);
        }
    }

    return $canonical;
}, 10, 2);

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

Если фильтры живут в архиве: закрываем шаблон условно

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

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

    if ((is_archive() || is_category() || is_tag() || is_tax()) && !empty($_GET)) {
        $allowed = ['paged'];
        $has_filter = false;

        foreach (array_keys($_GET) as $key) {
            if (!in_array($key, $allowed, true)) {
                $has_filter = true;
                break;
            }
        }

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

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

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

После правок не ограничивайтесь просмотром кода. Нужно проверить фактический HTML и поведение поисковика.

  • Откройте URL с параметром, например /category/news/?orderby=date.
  • Посмотрите исходный код страницы: должен появиться <meta name="robots" content="noindex,follow" />.
  • Проверьте canonical: он должен вести на чистую страницу без параметров.
  • Убедитесь, что обычная версия URL без параметров не получила noindex случайно.
  • Если используете кэш, очистите его и повторите проверку в приватном окне.

Для быстрой проверки можно временно открыть страницу через view-source: в браузере или использовать curl:

curl -I https://example.com/category/news/?orderby=date

Если мета-тег выводится через wp_head, в заголовках его не будет видно, поэтому проверяйте именно HTML, а не только HTTP response headers.

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

Закрыли весь архив вместо только параметров

Такое случается, когда условие слишком широкое. Например, проверяют только is_archive() без анализа $_GET. В итоге поисковик перестаёт индексировать полезные страницы категорий. Исправление простое: добавьте проверку конкретных параметров и не трогайте чистые URL.

Поставили noindex, но оставили внутренние ссылки на мусорные URL

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

Canonical указывает на несуществующую или редиректящую страницу

Это частая ошибка после смены структуры ЧПУ. Canonical должен вести на конечный, стабильный URL без цепочек редиректов. Иначе поисковик может игнорировать подсказку.

Кэш не обновили после правок

Если на сайте есть серверный кэш, page cache или CDN, старый HTML может продолжать отдавать прежние мета-теги. После изменений очистите кэш на всех уровнях: плагин, сервер, CDN, браузер.

Что делать, если параметры создаёт плагин

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

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

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

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

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить пустые категории в WordPress с помощью кода
19.12.2025
Как закрыть от индексации страницы внутреннего поиска WordPress
18.08.2026
Как закрыть от индексации страницы поиска WordPress с параметром s
06.09.2026
Как отключить кэширование для определённых страниц WordPress
10.02.2026
Оценка производительности WordPress без плагинов: практические способы и примеры
10.01.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙