Как убрать опросы из XML sitemap и robots в WordPress без ломки индексации

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

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

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

Сначала стоит понять, что именно вы хотите исправить. Если в Search Console появляются URL опросов, это не всегда ошибка. Иногда поисковик просто нашёл их через внутренние ссылки или через XML sitemap. В таком случае удаление из sitemap снижает вероятность повторного обхода, но не гарантирует исчезновение из индекса.

Признаки, что sitemap нужно чистить

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

Что не решает проблему

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

Диагностика: где именно опросы попали в индексацию

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

  1. Откройте XML sitemap и найдите URL опросов.
  2. Посмотрите, есть ли у них отдельный тип записей в коде или в плагине.
  3. Проверьте, не генерируются ли архивы опросов автоматически.
  4. Убедитесь, что на эти URL не ведут массовые внутренние ссылки из меню, блоков и виджетов.

Если опросы — это отдельный тип записей, обычно достаточно исключить его из sitemap и при необходимости отключить индексацию на уровне шаблона или фильтра. Если это обычные страницы, придётся работать точечно: через noindex и исключение из карты сайта по ID или по условию.

Пошаговое решение для XML sitemap

В WordPress 5.5+ есть встроенный XML sitemap. Многие SEO-плагины тоже генерируют свои карты сайта. Поэтому сначала определите источник: стандартный WordPress, Yoast SEO, Rank Math или другой плагин. Логика исключения будет отличаться.

1. Исключить отдельный тип записей из встроенного sitemap

Если опросы — это отдельный тип записей, зарегистрированный с public и show_in_rest, но не нужный в поиске, можно отключить его попадание в стандартную карту сайта через фильтр wp_sitemaps_post_types.

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    if ( isset( $post_types['poll'] ) ) {
        unset( $post_types['poll'] );
    }

    return $post_types;
} );

Здесь poll — пример slug типа записей. У вас он может быть другим, например survey или vote. Проверить slug можно в коде плагина или в регистрации CPT.

2. Убрать конкретные страницы из sitemap по ID

Если опросы — это обычные страницы или записи, но исключать нужно не весь тип, а только часть URL, используйте фильтр wp_sitemaps_posts_query_args и исключите нужные ID.

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'page' !== $post_type ) {
        return $args;
    }

    $args['post__not_in'] = array_merge( $args['post__not_in'] ?? array(), array( 123, 456 ) );

    return $args;
}, 10, 2 );

Это рабочий вариант, если список страниц небольшой и известен заранее. Для большого количества опросов лучше исключать их по типу записи или по метке, а не руками по ID.

3. Если sitemap делает SEO-плагин

У Yoast SEO и Rank Math есть свои механизмы исключения. Важно не смешивать их с встроенным sitemap WordPress: иначе можно получить дубли карт сайта или ложное ощущение, что всё отключено, хотя поисковик всё ещё видит вторую карту.

ПодходКогда использоватьКомпромисс
Фильтр WordPress sitemapЕсли карта сайта встроеннаяНе влияет на SEO-плагин
Настройки SEO-плагинаЕсли sitemap генерирует Yoast/Rank MathНужно проверять отдельные типы записей и таксономии
robots.txtКак дополнительный слойНе удаляет URL из индекса

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

Если задача не только убрать URL из sitemap, но и запретить индексацию самих страниц, лучше ставить noindex на уровне шаблона или через SEO-плагин. Это надёжнее, чем надеяться на robots.

Вариант через wp_robots

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

add_filter( 'wp_robots', function( $robots ) {
    if ( is_singular( 'poll' ) ) {
        $robots['noindex'] = true;
        $robots['nofollow'] = true;
    }

    return $robots;
} );

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

Вариант через SEO-плагин

Если на сайте уже используется Yoast SEO или Rank Math, проще задать noindex в их настройках для нужного типа записей. Это удобнее для редакторов, чем править код, но важно не дублировать логику: либо код, либо настройки плагина, иначе потом трудно понять, где именно сработало ограничение.

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

После правок не ограничивайтесь визуальной проверкой. Нужны три проверки: sitemap, исходный код страницы и поведение в Search Console.

  • Откройте sitemap и убедитесь, что URL опросов там больше нет.
  • Посмотрите исходный код страницы опроса и найдите noindex в meta robots или в HTTP-эквиваленте, если он используется.
  • Проверьте URL через инструмент проверки в Search Console и отправьте его на повторное сканирование, если страница уже была в индексе.
  • Если используется кэш, очистите его после изменения фильтров и шаблонов.

Для быстрой локальной проверки можно открыть страницу опроса и посмотреть заголовок или HTML. Например, в коде темы или плагина временно вывести robots-метку через wp_head не нужно — лучше смотреть реальный результат в браузере и через исходный код.

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

Опрос убрали из sitemap, но он всё ещё в индексе

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

Закрыли всё через robots.txt

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

Сломали sitemap для всего сайта

Это часто происходит, когда фильтр применяют без проверки типа записи. Перед unset() всегда проверяйте, что ключ существует, и не удаляйте лишнее. После обновления кода откройте sitemap вручную и убедитесь, что в нём остались нужные записи.

Забыли про кэш

Если сайт использует page cache, CDN или серверный кэш, старый sitemap и старые meta robots могут жить отдельно от кода. После изменения фильтров очистите кэш плагина, объектный кэш и CDN, если он есть.

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

Если вы правите sitemap и robots кодом, не вносите изменения прямо в тему, которую обновляете. Лучше использовать мини-плагин или mu-plugin. Так вы не потеряете настройки после обновления и не будете зависеть от активной темы.

Для небольших правок удобно создать файл в wp-content/mu-plugins/. Это особенно полезно, если на сайте несколько технических исключений: опросы, архивы авторов, служебные страницы и тестовые типы записей.

<?php
/**
 * Plugin Name: Poll SEO Tweaks
 */

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['poll'] );
    return $post_types;
} );

add_filter( 'wp_robots', function( $robots ) {
    if ( is_singular( 'poll' ) ) {
        $robots['noindex'] = true;
    }
    return $robots;
} );

Такой файл проще контролировать, чем разрозненные правки в functions.php. Но перед выкладкой всё равно проверьте, что slug типа записи совпадает с реальным, а не взят из примера.

Когда лучше не трогать robots вообще

Если опросы — часть основного контента и должны приносить трафик, не закрывайте их бездумно. Иногда полезнее оставить страницу открытой, но убрать её из sitemap только на время тестирования или до наполнения контентом. Это особенно актуально, если у страницы есть уникальный текст, комментарии или результаты, которые могут быть полезны пользователю.

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

Как отключить emoji в WordPress без поломки верстки и лишних запросов
19.09.2026
Как отключить XML-RPC в WordPress без поломки авторизации и отладить ошибки
15.09.2026
Как закрыть от индексации страницы поискового фильтра в WordPress
09.09.2026
Как закрыть от индексации страницы пагинации архива в WordPress
12.09.2026