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

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

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

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

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

Диагностика: что проверить первым

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

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

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

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

СпособКогда подходитПлюсыМинусы
Настройка SEO-плагинаНужно убрать записи, страницы, таксономии или CPT без кодаБыстро, безопасно, удобно для редактораЗависит от конкретного плагина и его интерфейса
Фильтр в кодеНужно точечно исключить URL по ID, типу записи или условиюГибко, не зависит от UIНужен аккуратный деплой и контроль обновлений
Изменение настроек CPT/таксономииНужно убрать целый тип контента из карты сайтаЧистое решение на уровне регистрацииПодходит не для всех случаев, требует доступа к коду

Вариант 1. Исключение через SEO-плагин

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

Например, если нужно убрать служебные страницы, лучше отключить их в настройках типа записи, чем потом ловить их в фильтрах. Так меньше шансов, что URL вернётся после обновления.

Вариант 2. Исключение через код

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

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

    if ( 'page' === $post_type ) {
        $args['post__not_in'] = array_merge( $args['post__not_in'] ?? array(), array( 789 ) );
    }

    return $args;
}, 10, 2 );

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

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

Вариант 3. Убрать целый тип записи из карты сайта

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

<?php
add_filter( 'register_post_type_args', function( $args, $post_type ) {
    if ( 'internal_note' === $post_type ) {
        $args['publicly_queryable'] = false;
        $args['show_in_rest']       = false;
        $args['exclude_from_search'] = true;
    }

    return $args;
}, 10, 2 );

Важно: exclude_from_search не удаляет запись из sitemap автоматически во всех конфигурациях. Это только часть решения. Если тип записи продолжает попадать в карту сайта, проверьте, не генерирует ли его SEO-плагин отдельно.

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

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

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

Проверка должна быть не визуальной, а технической. Откройте сам sitemap и убедитесь, что нужного URL там нет. Затем проверьте исходный код страницы: если она должна оставаться доступной, но не индексироваться, на ней должен быть корректный meta robots или заголовок X-Robots-Tag в зависимости от реализации.

Полезно сделать ещё три проверки:

  • Открыть sitemap в режиме инкогнито, чтобы исключить влияние кеша браузера.
  • Проверить HTTP-ответ страницы через DevTools или curl -I, если настраивали заголовки.
  • Сравнить дату последней генерации sitemap, если плагин её показывает, с моментом внесения изменений.
curl -I https://example.com/sitemap.xml

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

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

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

Это нормально, если страница доступна по ссылкам и не закрыта от индексации. Sitemap не является запретом. Нужно отдельно проверить noindex, canonical и внутренние ссылки.

Сломали sitemap после обновления плагина

Чаще всего это происходит, когда правки внесены прямо в файлы плагина или темы. После обновления они перезаписываются. Используйте дочернюю тему, mu-plugin или отдельный мини-плагин.

Исключили не тот URL из-за неверного ID

Перед добавлением в массив исключений проверьте ID записи в админке или через список записей. Ошибка в одном числе может убрать из sitemap важную страницу вместо тестовой.

Скрыли страницу из sitemap, но оставили её в меню и в блоках перелинковки

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

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

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

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

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

Когда лучше не трогать sitemap вручную

Если URL уже не должен существовать, а не просто отсутствовать в карте сайта, правильнее настроить 301-редирект или вернуть 410 для удалённого материала. Исключение из sitemap в таком случае — только косметика. Поисковик всё равно может найти адрес по старым ссылкам, внешним упоминаниям или кешу.

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

Как автоматизировать управление решениями в WordPress с помощью WPKPI
09.09.2026
Оптимизация загрузки шаблонов WordPress для ускорения сайта
09.09.2026
WooCommerce: автоматическое удаление заказов по истечении срока
18.09.2026
Как отключить AJAX в WordPress для решения проблем с конфликтами плагинов
20.09.2026
Как отключить emoji в WordPress через код и плагин
25.09.2026