Архивы авторов и внутренний поиск часто создают в WordPress страницы, которые не несут самостоятельной ценности для поиска: тонкие архивы, дубли заголовков, пустые результаты, мусорные URL с параметрами. При этом полностью удалять их обычно не нужно — достаточно убрать их из индекса и не сломать навигацию для пользователей.
Ниже — рабочий сценарий без выдуманных хуков и без магии: сначала разберём, когда проблема действительно есть, затем покажу два безопасных способа закрыть такие страницы от индексации, и в конце — как проверить, что всё сработало.
Когда это действительно проблема
Не каждую страницу автора или поиска нужно прятать от индекса. Ошибка начинается, когда архивы начинают конкурировать с основными страницами сайта или засоряют индекс пустыми и слабыми URL.
Типичные признаки
- в поиске появляются страницы вида
/author/username/, хотя у автора нет отдельной ценности для пользователя; - индексируются URL поиска вроде
/?s=...или/page/2/?s=...; - в Search Console растёт число страниц с низким качеством или дублирующимися заголовками;
- по внутреннему поиску есть много пустых результатов, которые всё равно попадают в индекс;
- архивы авторов дублируют контент рубрик или записей.
Если у вас новостной или экспертный сайт, архив автора иногда полезен. Но если это обычный корпоративный блог или сайт с несколькими редакторами, чаще всего индексировать такие страницы нет смысла.
Диагностика: что именно закрывать
Перед правками проверьте, какие URL уже попали в индекс и как они выглядят для поисковиков. Это поможет не закрыть лишнее и не оставить проблему наполовину решённой.
- Откройте архив автора и посмотрите, есть ли у него уникальный контент: описание, список материалов, полезная навигация.
- Проверьте страницы поиска с запросами, которые дают пустой или слабый результат.
- Посмотрите исходный код страницы: есть ли уже
noindexв мета-тегах или заголовках ответа. - Проверьте robots.txt: там часто пытаются закрыть поиск через
Disallow, но это не всегда решает вопрос индексации.
Важно: запрет в robots.txt и noindex — не одно и то же. Если URL уже известен поисковику, один только robots.txt может оставить его в индексе как «URL без содержимого». Для удаления из индекса обычно нужен именно noindex.
Рабочие способы: плагин или код
Если нужен быстрый и аккуратный результат, есть два нормальных пути: использовать SEO-плагин с настройками архивов или добавить правила в тему/мини-плагин. Для точечной задачи код часто надёжнее, потому что вы контролируете именно те URL, которые хотите закрыть.
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| SEO-плагин | быстро, без кода, удобно для редакторов | зависимость от интерфейса и настроек плагина | если уже используете SEO-плагин и не хотите править код |
| Код в теме/мини-плагине | точный контроль, меньше лишних настроек | нужно аккуратно обновлять и тестировать | если нужна одна конкретная логика без лишних модулей |
| robots.txt | просто добавить правило | не гарантирует удаление из индекса | только как дополнительная мера, не как основное решение |
Пошаговое решение через код
Ниже пример, который закрывает от индексации архивы авторов и страницы внутреннего поиска, добавляя noindex, follow в мета-тег robots. Это не ломает переходы по ссылкам и не мешает поисковым роботам проходить по сайту.
<?php
add_filter('wp_robots', function (array $robots): array {
if (is_author() || is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант работает в современных версиях WordPress, где используется фильтр wp_robots. Если у вас уже стоит SEO-плагин, проверьте, не добавляет ли он свои правила поверх этого фильтра — иногда дублируются мета-теги, и тогда нужно оставить только один источник управления.
Если нужен более жёсткий контроль по типам страниц
Иногда закрывать нужно не все архивы автора, а только конкретные сценарии: например, если у автора нет биографии и меньше определённого числа записей. Тогда можно добавить условие.
<?php
add_filter('wp_robots', function (array $robots): array {
if (is_author()) {
$author_id = get_queried_object_id();
$post_count = count_user_posts($author_id, 'post', true);
if ($post_count < 3) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
}
if (is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Такой подход полезен, если часть авторов у вас действительно ведёт полноценные экспертные страницы, а часть — технические аккаунты без смысла для индекса.
Что делать со страницами поиска
Страницы поиска лучше закрывать от индексации почти всегда. Пользовательский поиск нужен для навигации, но как посадочная страница для поисковика он обычно бесполезен. При этом не стоит ломать сам поиск: форма и результаты должны продолжать работать для посетителей.
Если у вас в теме или плагине есть шаблон поиска, проверьте, что он не выводит лишние заголовки и не создаёт пустые страницы с пагинацией. Для поисковых URL с параметром ?s= достаточно noindex, follow.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что поисковики увидят именно то, что вы задумали.
- Откройте архив автора и поиск в браузере.
- Посмотрите исходный код страницы и найдите мета-тег robots.
- Проверьте, что там есть
noindexи нет конфликтующих директив. - Если используете SEO-плагин, убедитесь, что он не выводит второй мета-тег robots.
- В Search Console отправьте URL на проверку и посмотрите, как страница определяется роботом.
Для быстрой локальной проверки можно использовать просмотр заголовков ответа:
curl -I https://example.com/?s=testНо здесь есть нюанс: noindex чаще находится не в HTTP-заголовке, а в HTML-коде страницы. Поэтому дополнительно откройте саму страницу и проверьте исходник.
Частые ошибки и как их исправить
Закрыли в robots.txt, но URL всё равно в индексе
Это типичная ситуация. Если страница уже известна поисковику, одного запрета в robots.txt мало. Добавьте noindex и дождитесь переобхода.
Поставили noindex на всё подряд
Иногда в коде пишут слишком широкое условие и закрывают не только поиск, но и полезные архивы. Проверяйте условия is_author() и is_search() отдельно, а после правки тестируйте несколько URL вручную.
Конфликт с SEO-плагином
Если плагин уже управляет мета-тегами, ваш код может дублировать правила или быть перезаписан. В таком случае оставьте один источник истины: либо настройку в плагине, либо код.
Сломали поиск для пользователей
Такое бывает, если вместе с индексацией отключают сам шаблон поиска или редиректят все запросы ?s=. Пользовательский поиск должен работать, а закрывать нужно только индексацию.
Практические советы по безопасности и производительности
Если вы вносите код в тему, лучше не править functions.php напрямую на продакшене. Используйте дочернюю тему или небольшой mu-plugin, чтобы обновление темы не затёрло изменения.
Ещё один практичный момент: не пытайтесь решать задачу через массовые редиректы с архивов автора на главную. Это ухудшает навигацию и часто создаёт лишнюю нагрузку на сервер и поисковый обход. Для SEO-задачи достаточно корректной директивы noindex.
Если на сайте уже много дублей и служебных страниц, имеет смысл сначала привести в порядок технические настройки, а потом закрывать отдельные URL. В таких случаях полезно проверить, не создаёт ли тема лишние архивы, пагинацию или пустые страницы. Иногда проблема не в индексации как таковой, а в структуре шаблонов.
Если нужен более широкий набор инструментов для чистки дублей и технических SEO-настроек, можно посмотреть на Clearfy Pro, но для этой задачи код выше уже закрывает основной сценарий без лишней зависимости от плагина.
Короткий чек-лист перед публикацией
- Проверили, какие архивы автора реально нужны пользователю.
- Убедились, что страницы поиска не должны индексироваться.
- Добавили
noindex, followчерезwp_robotsили SEO-плагин. - Не использовали robots.txt как единственный способ.
- Проверили исходный код и отсутствие конфликтов с плагинами.
- Отправили URL на переобход в Search Console.
Если после правки в индексе остаются старые URL, это нормально: поисковику нужно время на повторный обход. Главное — чтобы на самих страницах уже стояли правильные директивы и не было новых дублей.