В WordPress часто нужно закрыть от индексации не весь сайт, а только конкретные страницы: служебные разделы, дубли архивов, результаты поиска, страницы авторов, тестовые материалы или технические URL. Если делать это через код, контроль получается точнее, чем через набор разрозненных настроек в плагинах.
Ниже — рабочий сценарий: как определить, что именно мешает индексации, какие хуки использовать, как не сломать SEO на нужных страницах и как проверить, что поисковый робот действительно видит нужный noindex.
Когда проблема действительно в индексации, а не в контенте
Перед правкой шаблонов и functions.php стоит понять, что именно вы хотите закрыть. Ошибка часто не в том, что страница индексируется, а в том, что в индекс попадают дубли: архивы тегов, страницы пагинации, результаты внутреннего поиска, вложения изображений, страницы автора на небольшом сайте.
Типичные признаки
- в поиске есть URL, которые не должны ранжироваться вообще;
- в выдаче появляются страницы поиска вида
?s=; - индексируются вложения медиафайлов с пустой или почти пустой страницей;
- в отчётах поисковика много служебных архивов, но они не дают трафик;
- в сниппетах всплывают страницы пагинации, хотя нужен только первый лист архива.
Что проверить до внедрения
- Есть ли у страницы реальная ценность для поиска.
- Не используется ли она как посадочная внутри сайта.
- Не закрыта ли она уже через
robots.txt— если да, этого может быть недостаточно для удаления из индекса. - Нет ли на ней canonical на другую страницу, который уже решает задачу без
noindex.
Если задача — убрать URL из индекса, обычно нужен именно noindex в мета-теге или заголовке ответа, а не только запрет в robots.txt. Robots может помешать обходу, но не всегда быстро убирает уже известный URL из выдачи.
Какой способ выбрать: плагин, код или настройка темы
Если у вас одна-две страницы, можно обойтись кодом. Если нужно управлять множеством шаблонов и архивов, удобнее использовать SEO-плагин. Но когда задача точечная и понятная, код часто надёжнее: он не зависит от интерфейса и не тащит лишнюю логику.
| Подход | Когда подходит | Минус |
|---|---|---|
| Код в теме или мини-плагине | Точечные правила для нескольких URL | Нужно аккуратно поддерживать |
| SEO-плагин | Много архивов, таксономий и шаблонов | Часть логики спрятана в настройках |
| robots.txt | Только ограничение обхода | Не всегда убирает URL из индекса |
Если вы уже используете комплексный SEO-плагин, сначала проверьте его настройки. Но если нужен именно кодовый вариант, лучше вынести его в мини-плагин, а не в functions.php: так проще отключить и не потерять правки при смене темы.
Пошаговое решение: добавляем noindex для нужных страниц
Самый безопасный путь — повесить вывод мета-тега на wp_head и ограничить его только нужными типами страниц. Ниже пример, который закрывает внутренний поиск, страницы вложений и архивы автора на сайте, где они не нужны для индексации.
<?php
add_action('wp_head', function () {
if (is_search() || is_attachment() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот вариант работает, если тема корректно вызывает wp_head(). На большинстве тем это так, но если мета-тег не появляется, сначала проверьте шаблон header.php.
Как закрыть конкретную страницу по ID
Если нужно убрать из индекса только один материал, можно проверять ID страницы или записи. Это полезно для тестовых лендингов, страниц благодарности или внутренних документов.
<?php
add_action('wp_head', function () {
if (is_page(42) || is_page(108)) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Если у вас несколько страниц, лучше хранить список ID в массиве и не плодить отдельные условия.
Как закрыть архивы и дубли
На контентных сайтах чаще всего закрывают архивы тегов, авторов, дат и страницы поиска. Но делать это нужно не вслепую: если архивы тегов реально приводят трафик, закрывать их не стоит.
<?php
add_action('wp_head', function () {
if (is_search() || is_attachment() || is_author() || is_date() || is_tag()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Обратите внимание на follow: ссылки на странице остаются доступными для обхода, но сама страница не должна ранжироваться. Для служебных архивов это обычно нормальный компромисс.
Если нужен не мета-тег, а заголовок X-Robots-Tag
Для некоторых типов файлов и нестандартных URL удобнее отдавать X-Robots-Tag в HTTP-заголовке. Это полезно, когда HTML-страницы нет или когда нужно закрыть от индексации вложения и файлы.
<?php
add_action('send_headers', function () {
if (is_attachment()) {
header('X-Robots-Tag: noindex, follow', true);
}
});Такой способ не заменяет мета-тег на обычных страницах, но для вложений и файлов он часто уместнее. Проверять его нужно через заголовки ответа, а не только в исходном коде страницы.
Проверка результата после внедрения
После правки не ограничивайтесь визуальным просмотром страницы. Нужно убедиться, что правило реально отрабатывает и не конфликтует с кэшем.
- Откройте страницу в браузере и посмотрите исходный код: должен быть
<meta name="robots" content="noindex,follow" />. - Проверьте заголовки ответа для вложений или файлов через DevTools или
curl -I. - Очистите кэш страницы, если используется плагин или серверный кэш.
- Проверьте URL в инструменте проверки страницы поисковой системы, если он доступен.
- Убедитесь, что canonical не указывает на случайную страницу, если вы рассчитываете на удаление из индекса именно этого URL.
Пример проверки заголовков через консоль:
curl -I https://example.com/wp-content/uploads/2026/01/file.pdfЕсли вы видите старый HTML без noindex, значит проблема либо в кэше, либо в том, что условие в коде не срабатывает на нужном шаблоне.
Частые ошибки и как их исправить
Ошибка 1. Закрыли URL в robots.txt и ждёте удаления из индекса
Это частая путаница. Robots.txt ограничивает обход, но не гарантирует быстрое исчезновение URL из выдачи. Если страница уже известна поисковику, обычно нужен noindex или корректный canonical.
Ошибка 2. Добавили код, но забыли про кэш
Если на сайте включён page cache, мета-тег может не обновиться сразу. Очистите кэш плагина, серверный кэш и CDN, иначе проверка даст ложный результат.
Ошибка 3. Закрыли важные страницы вместе с мусором
Например, is_author() может быть полезен на сайте с экспертными профилями. Перед массовым закрытием архивов проверьте, не теряете ли вы трафик и внутреннюю перелинковку.
Ошибка 4. Вставили код не в тот файл
Если код лежит в теме, он пропадёт после смены темы. Для таких задач лучше использовать мини-плагин или mu-plugin. Это особенно важно, если сайт обслуживается несколькими разработчиками.
Мини-плагин вместо правки темы: более надёжный вариант
Если вы не хотите трогать тему, создайте простой плагин. Это несложно и удобнее для поддержки.
<?php
/**
* Plugin Name: Site Noindex Rules
*/
add_action('wp_head', function () {
if (is_search() || is_attachment() || is_author()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Такой файл можно положить в wp-content/plugins/site-noindex-rules/site-noindex-rules.php и активировать из админки. Для небольших правил это лучше, чем править шаблоны вручную.
Практические советы по безопасности и производительности
Не используйте тяжёлые плагины ради одной-двух директив. Если задача точечная, код в мини-плагине обычно быстрее и прозрачнее. Но если у вас уже стоит SEO-плагин и он закрывает нужные типы архивов без костылей, не дублируйте логику в коде: двойные правила потом сложно отлаживать.
Если вы работаете с большим сайтом, отдельно проверьте:
- не генерируются ли дубли через параметры URL;
- нет ли страниц с одинаковым контентом под разными адресами;
- не закрываете ли вы от индексации страницы, которые участвуют во внутренней перелинковке;
- не ломает ли правило мобильную или AMP-версию, если она есть.
Для комплексной чистки дублей и технических настроек иногда удобнее использовать специализированные инструменты вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wppuzzle.ru&utm_medium=article&utm_campaign=kak-otklyuchit-indeksatsiyu-otdelnyh-stranits-v-wordpress-bez-plaginov. Но даже в этом случае полезно понимать, какой именно URL закрывается и почему.
Если после внедрения страницы всё ещё попадают в индекс, проверьте не только мета-тег, но и canonical, sitemap, внутренние ссылки и кэш. В WordPress техническая индексация почти всегда складывается из нескольких слоёв, и один правильный тег не спасёт, если остальные слои противоречат ему.