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

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

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

Когда проблема заметна уже в Search Console

Обычно сигнал один из трёх:

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

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

Что именно стоит исключать

Обычно речь идёт не о всех опросах подряд, а о конкретных типах записей или страницах:

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

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

Сначала проверьте, кто именно генерирует sitemap

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

ПодходКогда использоватьПлюсМинус
Настройка в SEO-плагинеЕсли у опросов отдельный post type или таксономияБезопасно и прозрачноЗависит от возможностей плагина
Фильтр в functions.php или мини-плагинеЕсли нужен точечный контрольРаботает даже при сложной логикеНужно следить за обновлениями темы
Комбинация с noindexЕсли URL не должны индексироваться вообщеСнижает риск попадания в поискНе убирает уже проиндексированные страницы мгновенно

Как убрать опросы из sitemap в Yoast SEO

Если опросы представлены отдельным типом записей, проще всего отключить его из XML sitemap через фильтр wpseo_sitemap_exclude_post_type. Это рабочий способ, если плагин опросов регистрирует собственный post type.

<?php
add_filter( 'wpseo_sitemap_exclude_post_type', function( $exclude, $post_type ) {
    if ( 'poll' === $post_type ) {
        return true;
    }

    return $exclude;
}, 10, 2 );

Код можно добавить в мини-плагин или в functions.php дочерней темы. Второй вариант быстрее, но менее надёжен при смене темы.

Если нужно убрать не весь тип записей, а только отдельные страницы, например результаты или архивы, лучше работать через фильтр wpseo_xml_sitemap_post_url или исключать записи по ID. Но это уже зависит от структуры конкретного плагина опросов.

Когда лучше не трогать post type целиком

Если опросы у вас — это статьи, встроенные в обычные записи, отключение post type не поможет. Тогда нужно либо исключать конкретные URL по шаблону, либо закрывать их от индексации на уровне мета-тегов. В противном случае вы уберёте из sitemap не то, что нужно, и потеряете полезные страницы.

Как убрать опросы из sitemap в Rank Math

В Rank Math есть фильтр rank_math/sitemap/entries, через который можно отфильтровать записи перед генерацией карты сайта. Это удобно, если нужно убрать только часть URL.

<?php
add_filter( 'rank_math/sitemap/entries', function( $entries, $type ) {
    if ( 'post' !== $type ) {
        return $entries;
    }

    foreach ( $entries as $key => $entry ) {
        if ( isset( $entry['loc'] ) && str_contains( $entry['loc'], '/polls/' ) ) {
            unset( $entries[ $key ] );
        }
    }

    return $entries;
}, 10, 2 );

Здесь я использую проверку по части URL /polls/, но в реальном проекте лучше опираться на стабильный признак: post type, шаблон страницы или конкретный префикс, который вы контролируете. Если структура URL меняется, строковая проверка быстро становится хрупкой.

Если у вас есть отдельный post type, в Rank Math иногда проще отключить его в настройках sitemap для типа записей, чем писать код. Но если нужен выборочный контроль, фильтр надёжнее.

Пошаговое решение без лишних рисков

Ниже рабочая последовательность, если нужно быстро и без сюрпризов.

  1. Определите, как именно создаются страницы опросов: отдельный post type, обычные записи или страницы плагина.
  2. Проверьте, какой SEO-плагин генерирует sitemap.
  3. Сначала отключите опросы в настройках плагина, если такая опция есть.
  4. Если настройки недостаточно, добавьте фильтр в мини-плагин или дочернюю тему.
  5. Очистите кэш сайта, если используется page cache или объектный кэш.
  6. Переотправьте sitemap в Google Search Console и проверьте ответ.

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

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

Проверка должна быть не на глаз, а по факту.

  • Откройте XML sitemap в браузере и убедитесь, что URL опросов там больше нет.
  • Если используется индекс sitemap, проверьте и дочерние карты.
  • В Search Console откройте раздел sitemap и посмотрите, нет ли ошибок при обходе.
  • Проверьте исходный код страницы опроса: нет ли там случайно noindex, если вы его добавляли отдельно.
  • Сделайте поиск по сайту через site:example.com только как дополнительную проверку, не как единственный критерий.

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

Что смотреть в логике обхода

Если после правки sitemap поисковик всё равно активно обходит опросы, проверьте кэширование XML. Некоторые плагины и серверные кэши отдают старую версию карты сайта. В таком случае нужно сбросить кэш на уровне плагина, CDN и сервера, а затем повторить проверку.

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

  • Убрали не тот тип записей. Проверьте, как реально называется post type в коде плагина опросов. Название в интерфейсе и системный slug часто отличаются.
  • Добавили код в родительскую тему. После обновления темы правка исчезнет. Используйте дочернюю тему или мини-плагин.
  • Не очистили кэш. Sitemap продолжает отдавать старую версию, и кажется, что фильтр не работает.
  • Скрыли URL из sitemap, но не закрыли от индексации. Если страница уже полезла в поиск, одного исключения из карты сайта мало.
  • Использовали проверку по части URL без стабильного шаблона. При смене структуры адресов фильтр перестаёт работать.

Безопасность и производительность: что учесть заранее

Для таких правок лучше не редактировать functions.php напрямую на живом сайте. Если в коде ошибка, можно получить белый экран или сломать генерацию sitemap целиком. Практичнее вынести фильтр в маленький mu-plugin или обычный плагин для сайта.

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

Для больших сайтов полезно держать логику исключений в одном месте: отдельный файл с фильтрами, комментарии к каждому правилу и список URL-шаблонов, которые вы сознательно убрали из sitemap. Это экономит время, когда через полгода кто-то меняет структуру опросов и забывает про SEO-настройки.

Если нужно убрать только часть опросов, а не все

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

Например, если у записи есть собственное поле is_internal, можно исключать такие записи из sitemap по метаполю. Это надёжнее, чем проверять заголовок или URL вручную, и удобнее для редакторов.

<?php
add_filter( 'wpseo_sitemap_entry', function( $url, $type, $object ) {
    if ( isset( $object->ID ) && 'poll' === get_post_type( $object->ID ) ) {
        $is_internal = get_post_meta( $object->ID, 'is_internal', true );

        if ( '1' === $is_internal ) {
            return false;
        }
    }

    return $url;
}, 10, 3 );

Здесь важно проверить, какой именно фильтр и структура объекта доступны в вашей связке плагинов. Логика примера рабочая, но детали зависят от того, как SEO-плагин формирует запись sitemap.

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

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