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

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

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

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

Перед правкой кода стоит убедиться, что поисковик видит именно ту страницу, которую вы хотите закрыть. Иногда проблема не в индексации как таковой, а в дубле URL: с параметрами, со слешем и без, с пагинацией, с UTM-метками или с неправильным canonical.

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

  • страница реально доступна по HTTP 200, а не редиректит на другой URL;
  • в исходном коде нет уже установленного noindex от темы или плагина;
  • canonical указывает на нужную версию страницы;
  • URL не закрыт в robots.txt раньше, чем вы добавили мета-тег — это мешает переобходу и обновлению сигнала.

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

Диагностика: какие страницы закрывать, а какие нет

Не стоит массово ставить noindex на всё подряд. Для WordPress обычно закрывают:

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

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

Пошаговое решение без плагинов

Есть два рабочих подхода: точечно добавить мета-тег noindex в <head> или управлять индексированием через HTTP-заголовок для отдельных типов ответов. Для большинства WordPress-сайтов достаточно первого варианта.

Вариант 1. Добавить noindex для конкретных страниц через wp_head

Этот способ подходит, если нужно закрыть от индексации отдельные страницы по ID, шаблону или типу записи. Код лучше добавить в дочернюю тему или в небольшой mu-plugin, чтобы он не потерялся при обновлении темы.

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

    $noindex = false;

    // Пример: закрыть страницу поиска.
    if ( is_search() ) {
        $noindex = true;
    }

    // Пример: закрыть конкретные страницы по ID.
    if ( is_page( array( 12, 34, 56 ) ) ) {
        $noindex = true;
    }

    // Пример: закрыть архив автора на небольшом сайте.
    if ( is_author() ) {
        $noindex = true;
    }

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

Здесь важно использовать follow, если вы не хотите ломать внутреннюю перелинковку. Поисковик увидит запрет на индексацию страницы, но сможет переходить по ссылкам дальше.

Вариант 2. Закрыть архивы и служебные страницы через условные теги

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

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

    if ( is_search() || is_author() || is_date() ) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}

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

Вариант 3. Закрыть страницу через wp_robots в современных версиях WordPress

В актуальных версиях WordPress есть фильтр wp_robots, который позволяет корректно добавить директивы robots без ручной печати HTML в head. Это более аккуратный вариант, если вы хотите работать в рамках штатного API.

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

    return $robots;
}

Плюс этого подхода в том, что он лучше сочетается с другими настройками темы и плагинов, которые тоже работают через robots-правила.

Что выбрать: код, robots.txt или SEO-плагин

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

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

Как проверить, что запрет индексации сработал

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

Проверка в исходном коде

Откройте страницу и найдите в <head> строку вида:

<meta name="robots" content="noindex,follow" />

Если тег не появился, проверьте, что код подключён в активной теме или mu-plugin, а условие is_page() или is_search() действительно срабатывает на нужном URL.

Проверка через curl

Иногда удобнее смотреть ответ сервера напрямую, особенно если есть кэш или CDN.

curl -I https://example.com/sample-page/

Если вы используете HTTP-заголовок X-Robots-Tag для PDF, изображений или других файлов, проверяйте именно заголовки ответа. Для обычных HTML-страниц чаще достаточно мета-тега.

Проверка в поисковой консоли

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

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

  • Ставят Disallow в robots.txt вместо noindex. Это не удаляет уже проиндексированную страницу. Для удаления нужен сигнал на самой странице.
  • Закрывают важные категории и архивы по шаблону. В результате теряется полезная перелинковка и часть страниц выпадает из поиска.
  • Добавляют код в родительскую тему. После обновления изменения исчезают. Используйте дочернюю тему или mu-plugin.
  • Не проверяют конфликт с SEO-плагином. Если плагин уже выводит свои robots-метки, можно получить дубли или противоречивые директивы.
  • Сразу ставят noindex,nofollow. Для большинства страниц это слишком жёстко. Обычно безопаснее оставить follow.

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

Если вы закрываете от индексации много URL, не превращайте это в хаотичный набор условий в functions.php. Лучше вынести логику в отдельный мини-плагин или mu-plugin и явно описать, какие типы страниц закрываются и почему.

Для больших сайтов полезно:

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

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

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

Как использовать WP-Cron для автоматизации заказов в WooCommerce
16.07.2026
Как закрыть старые URL в WordPress через 301 и canonical без потери индексации
23.08.2026
Как создать обновляемое изображение в WordPress
03.12.2025
Как удалить кэш в WordPress правильно: лучшие практики и примеры кода
22.11.2025
Как добавить уникальные метаданные в WordPress для локализации сайта
18.03.2026