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

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

Ниже разберём, как исключать страницы из sitemap в WordPress разными способами: через настройки SEO-плагина, через код и через проверку результата в Search Console и по самому файлу карты сайта. Сценарий полезен, если нужно убрать из sitemap отдельные страницы, а не закрывать весь тип контента целиком.

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

Не каждая лишняя страница в индексе — это ошибка карты сайта. Но если URL регулярно появляется в XML sitemap, а вы не хотите его продвигать и даже не планируете индексировать, лучше убрать его на уровне генерации карты, а не надеяться на случай.

Типичные признаки

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

Что важно проверить до правок

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

Диагностика: где именно появляется лишний URL

Откройте карту сайта в браузере и найдите проблемный адрес. В WordPress это обычно один из вариантов: /sitemap.xml, /wp-sitemap.xml или карта, которую генерирует SEO-плагин. Дальше проверьте, откуда URL берётся.

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

Полезно сравнить sitemap до и после изменений через обычный просмотр файла и через Search Console. Иногда карта обновляется не сразу, особенно если стоит кеширование на уровне плагина, сервера или CDN.

Как исключить страницы через SEO-плагин

Если у вас уже стоит SEO-плагин, это самый безопасный путь. В большинстве случаев лучше убрать URL из sitemap настройкой плагина, чем писать костыли в теме.

Вариант 1: убрать отдельную запись или страницу

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

Плюс этого способа в том, что он не ломает обновления темы и не требует правки ядра. Минус — если страниц много, ручная настройка быстро становится неудобной.

Вариант 2: отключить тип контента или таксономию целиком

Если у вас, например, служебный CPT или техническая таксономия, проще убрать весь тип из sitemap. Это делается в настройках SEO-плагина или через фильтры, если плагин их предоставляет. Такой подход лучше, чем вычищать по одной записи.

ПодходКогда подходитРиск
Настройка в SEO-плагинеНужно убрать отдельные URL или типы контентаНизкий
Код через фильтрНужна точная логика и автоматизацияСредний, если править без теста
Отключение sitemap целикомРедкий случай, когда карта не нужнаВысокий: можно потерять полезные URL

Как исключить страницу из sitemap кодом

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

Пример для встроенного XML sitemap WordPress

Ниже пример, который убирает конкретную страницу из стандартной карты сайта WordPress. Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin.

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'page' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    return $args;
}, 10, 2 );

Здесь 123 и 456 — ID страниц, которые нужно исключить. Фильтр работает на уровне запроса к постам для sitemap, поэтому URL просто не попадут в карту.

Если нужно исключать по условию

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

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' !== $post_type ) {
        return $args;
    }

    $excluded_ids = get_posts( array(
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'meta_key'       => '_exclude_from_sitemap',
        'meta_value'     => '1',
    ) );

    if ( ! empty( $excluded_ids ) ) {
        $args['post__not_in'] = $excluded_ids;
    }

    return $args;
}, 10, 2 );

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

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

  1. Определите, какие URL должны исчезнуть из sitemap: одна страница, набор записей, целый тип контента или таксономия.
  2. Проверьте, есть ли у SEO-плагина штатная настройка для исключения.
  3. Если настройки нет или её недостаточно, добавьте фильтр в дочернюю тему или mu-plugin.
  4. Очистите кеш сайта, если он есть.
  5. Переоткройте sitemap и убедитесь, что URL больше не выводится.
  6. Проверьте Search Console и дождитесь повторного обхода.

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

Проверка должна быть не только визуальной. Откройте карту сайта и убедитесь, что проблемный URL исчез из XML. Затем проверьте заголовок ответа страницы: она может оставаться доступной по прямой ссылке, и это нормально, если вы не закрывали её отдельно.

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

Если карта сайта не меняется, чаще всего виноват кеш. Вторая частая причина — вы правите не тот sitemap: например, отключили встроенную карту WordPress, а сайт отдаёт карту SEO-плагина.

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

Ошибка 1. Убрали URL из sitemap, но оставили внутренние ссылки

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

Ошибка 2. Правят файл sitemap вручную

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

Ошибка 3. Добавили код в тему, а потом обновили её

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

Ошибка 4. Смешали sitemap и robots.txt

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

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

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

С точки зрения безопасности не стоит править ядро WordPress и не нужно ставить сомнительные плагины ради одной задачи. Если нужен более широкий набор SEO- и технических настроек, иногда проще взять нормальный инструмент с понятной логикой, чем собирать решение из случайных сниппетов. Например, для чистки дублей и технических SEO-настроек можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy.

Когда лучше не исключать страницу из sitemap

Если страница полезна пользователям и должна ранжироваться, не убирайте её только потому, что она вам кажется «неважной». Sitemap — это не список страниц для красоты, а подсказка поисковику. Убирать стоит только то, что действительно не должно участвовать в индексации или создаёт шум: служебные страницы, тестовые материалы, дубли, временные URL.

Если сомневаетесь, сначала проверьте, нет ли у страницы внутреннего трафика, переходов из поиска или ссылок из важных разделов. Иногда правильнее не исключать URL из sitemap, а пересмотреть его контент, canonical или статус индексации.

⭐⭐⭐⭐⭐