Как исключить страницу из XML Sitemap в WordPress и не сломать индексацию

Ситуация типовая: страница должна остаться на сайте, но не должна подсказывать поисковикам, что ее нужно активно обходить через XML Sitemap. Это бывает для служебных страниц, временных лендингов, дублей с параметрами, внутренних материалов для теста или контента, который уже закрыт другими способами, но все еще присутствует в sitemap.

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

Когда это действительно нужно

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

  • тестовая страница, которую еще не нужно показывать поисковикам;
  • дублирующий материал, который остается доступен пользователям по прямой ссылке;
  • страница с параметрами, которая генерируется плагином или темой;
  • внутренний шаблон, который не должен попадать в карту сайта по умолчанию;
  • контент, который вы временно выводите из SEO-обхода перед удалением или редизайном.

Диагностика: как понять, кто именно добавляет URL в sitemap

В WordPress карта сайта может формироваться ядром, SEO-плагином или отдельным плагином для кастомных типов записей. Сначала нужно понять источник. Откройте XML Sitemap и проверьте, где именно присутствует URL. Если карта сайта стандартная, обычно это /wp-sitemap.xml. Если установлен SEO-плагин, адрес может быть другим, например /sitemap_index.xml.

Дальше проверьте три вещи:

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

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

Пошаговое решение: убрать одну страницу из XML Sitemap

Самый надежный способ — исключить конкретный ID записи через фильтр WordPress. Это подходит, если sitemap формируется ядром WordPress. Для одной страницы достаточно добавить код в functions.php дочерней темы или в небольшой mu-plugin.

Вариант для стандартного XML Sitemap WordPress

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

    // Исключаем конкретную страницу по ID.
    $excluded_ids = array( 123 );

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

    $args['post__not_in'] = array_merge( $args['post__not_in'], $excluded_ids );

    return $args;
}, 10, 2 );

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

Если нужно убрать не одну страницу, а целый шаблонный тип

Иногда проблема не в конкретной странице, а в CPT, который не должен попадать в sitemap вообще. Тогда лучше отключать тип записей целиком через фильтр wp_sitemaps_post_types.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['landing'] );
    return $post_types;
} );

Здесь landing — пример slug пользовательского типа записей. Используйте реальное имя CPT, которое зарегистрировано в проекте.

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

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

Практический порядок такой:

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

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

Сравнение подходов

ПодходКогда подходитПлюсыМинусы
Настройка в SEO-плагинеЕсли sitemap генерирует Yoast SEO, Rank Math и т. п.Меньше риска конфликтов, проще поддержкаЗависит от возможностей конкретного плагина
Фильтр WordPressЕсли используется стандартный sitemap ядраТочечно, прозрачно, без лишних зависимостейНужно писать код и следить за обновлениями
Отключение типа записей целикомЕсли в sitemap не нужен весь CPTЧистое решение для системных типовНе подходит для одной-двух страниц

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

После внедрения не ограничивайтесь визуальной проверкой в админке. Нужны три шага:

  1. Откройте sitemap в браузере и убедитесь, что URL больше не присутствует в XML.
  2. Проверьте исходный код sitemap, если карта сайта собирается из нескольких вложенных файлов.
  3. Если страница уже была в индексе, проверьте ее статус в Google Search Console или Яндекс Вебмастере после следующего обхода.

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

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

Удалили URL из sitemap, но он все равно индексируется

Это ожидаемо. Sitemap — не запрет, а подсказка. Если страница доступна по ссылкам и не закрыта от индексации, поисковик может продолжать ее обходить. Решение: проверить внутренние ссылки, мета robots и статус страницы.

Сломали весь sitemap после правки functions.php

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

Исключили не ту страницу

Часто путают ID страницы и ID вложения, особенно если редактируют медиафайлы или дубли. Перед правкой откройте экран редактирования записи и проверьте ID в адресной строке или через колонку в списке записей.

Использовали несколько способов одновременно

Например, исключили страницу в SEO-плагине, добавили фильтр в теме и еще закрыли ее через robots.txt. В итоге диагностика становится сложной, а поведение — непредсказуемым. Для одной задачи выбирайте один основной механизм и фиксируйте его в документации проекта.

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

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

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

Практический чек-лист перед публикацией правки

  • Поняли, кто генерирует sitemap: ядро WordPress или SEO-плагин.
  • Определили точный URL и ID записи.
  • Выбрали один способ исключения, без дублирующих настроек.
  • Проверили sitemap после очистки кеша.
  • Убедились, что страница не нужна в индексе по другой причине.
  • Зафиксировали правку в заметках проекта или репозитории.

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

Как автоматически сохранять данные пользователя в WordPress без плагинов
03.10.2026
WooCommerce: автоматическое изменение атрибутов товаров через Webhook с примером кода
17.09.2026
Автоматическое отключение неиспользуемых виджетов в WordPress
17.09.2026
Как создать автоматический импорт продуктов в WordPress с помощью WP All Import
17.09.2026
Как создать автоматический бэкап в WordPress без плагинов
17.09.2026