Как исключить из индексации страницы по шаблону в WordPress

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

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

Когда проблема действительно в индексации по шаблону

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

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

Что проверить до правки кода

Откройте несколько проблемных URL и посмотрите:

  • есть ли в HTML мета-тег noindex;
  • не отдаёт ли страница canonical на другой адрес;
  • не закрыта ли она уже в robots.txt;
  • не генерирует ли её плагин SEO, кеш или фильтр темы;
  • не является ли это страницей, которую поиску всё-таки нужно видеть.

Если URL уже закрыт в robots.txt, но всё равно индексируется как «URL, известный роботу», это не всегда ошибка. Для удаления из индекса чаще нужен именно noindex или корректный canonical, а не только запрет обхода.

Какие способы есть и что выбрать

Для WordPress обычно используют три подхода. У каждого свой сценарий.

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

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

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

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

1. Добавляем мета-тег noindex для нужных шаблонов

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

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

    $noindex = false;

    if (is_author() || is_date() || is_search()) {
        $noindex = true;
    }

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

Этот вариант простой, но у него есть ограничение: если SEO-плагин уже выводит свои robots-метки, можно получить конфликт. Поэтому сначала проверьте, не дублируется ли noindex в исходном коде страницы.

2. Закрываем конкретные URL по шаблону через фильтр

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

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_search() || is_author() || is_date()) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
});

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

3. Добавляем правило в robots.txt только для обхода

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

User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /tag/
Disallow: /author/
Disallow: /feed/

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

Если нужен запрет только для части архива

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

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_category()) {
        $term = get_queried_object();

        if ($term && !empty($term->slug) && str_starts_with($term->slug, 'internal-')) {
            $robots['noindex'] = true;
            $robots['follow']  = true;
        }
    }

    return $robots;
});

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

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

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

  • Откройте страницу и посмотрите исходный код: должен быть <meta name="robots" content="noindex,follow"> или эквивалент через wp_robots.
  • Проверьте, что на странице нет второго противоречивого robots-тега.
  • Убедитесь, что URL не закрыт случайно через canonical на другой адрес, если это не было задумано.
  • В Search Console отправьте URL на повторную проверку, если он уже был в индексе.
  • Посмотрите, не исчез ли важный контент из индекса вместе с техническими страницами.

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

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

Закрыли URL в robots.txt и ждёте мгновенного удаления

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

Ставят noindex на все архивы без разбора

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

Дублируют директивы SEO-плагина и темы

Если плагин уже выводит noindex, а тема добавляет ещё один мета-тег, поведение становится непредсказуемым. Оставьте один источник правды: либо SEO-плагин, либо код темы, либо фильтр wp_robots.

Используют canonical вместо noindex

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

Безопасность и производительность

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

Не используйте тяжёлые проверки на каждой странице, если можно обойтись условными тегами WordPress. Например, is_search() и is_author() работают быстро и читаемо. А вот сложные запросы к базе в wp_head лучше избегать.

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

Что делать, если страница всё равно индексируется

Если после внедрения noindex URL продолжает появляться в выдаче, проверьте три вещи:

  1. страница доступна роботу и он видит мета-тег;
  2. нет ли редиректа на другой URL, где директива уже отсутствует;
  3. не переопределяет ли robots-метки SEO-плагин или серверный кеш.

Иногда проблема не в WordPress, а в кеширующем слое: HTML отдаётся старый, а в админке вы уже всё поменяли. В таком случае сначала очистите кеш страницы, объекта и CDN, если он есть.

Если нужен более точный контроль над техническими страницами, можно комбинировать wp_robots, canonical и правила в robots.txt. Но базовый принцип один: сначала определить, что именно должно исчезнуть из индекса, затем выбрать инструмент под задачу, а не наоборот.

Как массово удалить мета-ключи в WordPress
09.09.2026
Как использовать WP-CLI для автоматизации WordPress
09.09.2026
Автоматическое сохранение и обновление мета-полей при изменении записи в WordPress
09.09.2026
Как убрать attachment-страницы в WordPress и не сломать индексацию изображений
22.08.2026
Как отключить XML Sitemap для отдельных типов записей в WordPress
30.09.2026