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

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

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

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

Сначала стоит убедиться, что речь именно об индексации, а не о временном кэше поисковика. Проверка простая:

  • выполните запрос site:example.com и посмотрите, какие URL попали в выдачу;
  • откройте проблемную страницу и проверьте исходный код на наличие <meta name="robots" content="index,follow"> или отсутствия noindex;
  • если страница служебная, но доступна по прямой ссылке и отдает код 200, поисковик может ее индексировать;
  • проверьте, не генерируется ли дубль через параметры в URL, например ?s=, ?replytocom=, ?amp или фильтры темы.

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

Какие страницы обычно закрывают от индексации

Не стоит закрывать все подряд. На практике чаще всего убирают из индекса такие типы URL:

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

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

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

Самый управляемый вариант — добавить условную установку noindex через фильтр wp_robots. Этот подход работает в современных версиях WordPress и не требует правки шаблонов в каждом файле.

1. Добавляем noindex для конкретных типов страниц

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

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

    if ( isset( $_GET['sort'] ) || isset( $_GET['filter'] ) ) {
        $robots['noindex']  = true;
        $robots['nofollow'] = true;
    }

    return $robots;
} );

Что важно: nofollow здесь не обязателен во всех случаях. Если страница служебная и не должна передавать вес по ссылкам, его можно оставить. Если на странице есть полезные внутренние ссылки, иногда достаточно только noindex.

2. Закрываем отдельный URL по условию

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

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_page( array( 123, 456 ) ) ) {
        $robots['noindex']  = true;
        $robots['nofollow'] = true;
    }

    return $robots;
} );

Числа 123 и 456 замените на реальные ID страниц. Их можно посмотреть в админке при редактировании записи или в списке страниц, наведя курсор на ссылку.

3. Если нужен именно meta robots в шаблоне

Иногда тема не выводит стандартный тег, или вы хотите контролировать его вручную. Тогда можно добавить вывод в <head> через wp_head. Это менее гибко, но тоже рабочий вариант.

<?php
add_action( 'wp_head', function() {
    if ( is_search() || is_author() ) {
        echo '<meta name="robots" content="noindex, nofollow" />' . "\n";
    }
}, 1 );

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

Когда нужен robots.txt, а когда нет

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

Пример аккуратного блока для служебных разделов:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /?s=
Disallow: /search/
Disallow: /author/

Sitemap: https://example.com/sitemap_index.xml

Не закрывайте в robots.txt CSS, JS и изображения без причины. Это может мешать рендерингу страницы и ухудшать диагностику в инструментах поисковиков.

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

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

  1. Откройте страницу в браузере и посмотрите исходный код.
  2. Убедитесь, что в <head> появился noindex для нужного URL.
  3. Проверьте, что на обычных страницах сайта robots-тег не изменился случайно.
  4. Если используете кэш, очистите его на стороне сайта и CDN.
  5. Проверьте заголовки ответа через DevTools или curl.

Пример проверки через командную строку:

curl -I https://example.com/search/test/

Если вы закрывали страницу через meta robots, в заголовках этого не будет видно — тогда смотрите HTML-ответ:

curl -s https://example.com/search/test/ | grep -i robots

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

Сравнение подходов: код, плагин, robots.txt

ПодходКогда подходитПлюсыМинусы
Код через wp_robotsТочечные правила для страниц, архивов, параметровГибко, прозрачно, без лишних зависимостейНужно аккуратно поддерживать условия
SEO-плагинЕсли уже используется для мета-тегов и карт сайтаУдобно для редакторов, меньше ручного кодаЛегко получить дубли настроек и конфликт логики
robots.txtОграничение обхода технических URLПросто и быстроНе убирает уже проиндексированные страницы

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

Закрыли URL в robots.txt и ждете удаления из индекса

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

Добавили noindex в шаблон, но кэш показывает старую версию

Если стоит серверный кэш, page cache или CDN, страница может отдавать старый HTML. Очистите кэш, проверьте ответ без кэша и только потом делайте выводы.

Использовали одинаковое правило для всех архивов

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

Сделали noindex на уровне плагина и в теме одновременно

Два источника логики усложняют поддержку. Оставьте один источник правды: либо SEO-плагин, либо код в теме, либо мини-плагин.

Что проверить, чтобы не сломать SEO и производительность

  • не закрыты ли от индексации важные посадочные страницы;
  • не исчезли ли из выдачи страницы категорий, если они должны ранжироваться;
  • не блокирует ли robots.txt ресурсы, нужные для рендеринга;
  • не создает ли тема дубли URL с параметрами;
  • не выводится ли robots-тег дважды из-за конфликта с SEO-плагином.

Если на сайте уже есть SEO-плагин, иногда проще использовать его настройки для отдельных типов страниц, а код оставить только для нестандартных случаев — например, для URL с параметрами или внутренних служебных страниц. Если же нужен более широкий контроль над дублями и технической чисткой, в экосистеме WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае полезно понимать, как работает noindex на уровне WordPress, чтобы быстро находить причину проблем.

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

WooCommerce: как убрать статус «Оплаченное» из фильтра заказов в админке
31.05.2026
Как запретить отображение отзывов по категории в WordPress
16.03.2026
Как создать собственный шорткод в WordPress с примером кода
01.12.2025
WooCommerce: как изменить статус заказа после оплаты без плагинов
07.05.2026
WooCommerce: решение проблем с невалидными атрибутами и тегами для корректного SEO
09.06.2026