Как отключить XML-карту сайта для отдельных типов страниц в WordPress

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

Задача здесь не «выключить sitemap», а точечно убрать из неё конкретные типы контента: отдельные записи, страницы, таксономии, медиа-attachment, пользовательские типы записей или служебные шаблоны. Ниже — рабочие способы для WordPress с учётом того, как проверить результат и где чаще всего ошибаются.

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

Отключать отдельные URL из XML-карты имеет смысл, если они:

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

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

Диагностика: что именно попало в карту сайта

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

Проверка источника sitemap

  • Откройте /wp-sitemap.xml — это встроенная карта WordPress.
  • Проверьте /sitemap_index.xml или аналогичный адрес SEO-плагина.
  • Посмотрите исходный код страницы и заголовки ответа, если карта отдаётся через редирект.

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

Способы решения: плагин, фильтр или настройка CPT

Ниже — три рабочих подхода. Выбор зависит от того, где именно формируется карта сайта и насколько точечно нужно управлять списком URL.

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

Вариант 1. Убрать тип записи из встроенной XML-карты WordPress

Если sitemap отдаёт ядро WordPress, можно отключить конкретный post type через фильтр wp_sitemaps_post_types. Это полезно, когда нужно убрать, например, служебный тип event_log или внутренний landing, который не должен попадать в карту сайта.

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

    return $post_types;
} );

Код лучше размещать в мини-плагине или в functions.php дочерней темы. Если вы работаете на боевом сайте, мини-плагин безопаснее: он не сломается при смене темы.

Вариант 2. Убрать отдельную таксономию из карты сайта

Для таксономий используется фильтр wp_sitemaps_taxonomies. Это удобно, если нужно убрать, например, теги или служебные рубрики, но оставить категории.

<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    unset( $taxonomies['internal_topic'] );

    return $taxonomies;
} );

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

Вариант 3. Исключить конкретные записи по ID

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

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

    return $args;
}, 10, 2 );

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

Вариант 4. Настроить sitemap в SEO-плагине

Если sitemap генерирует плагин, сначала ищите настройку в его интерфейсе. У большинства SEO-плагинов можно отключить:

  • отдельные post type;
  • архивы таксономий;
  • медиа-attachment;
  • авторов;
  • даты, если они не нужны.

Это предпочтительнее кода, если задача типовая. Но если требуется логика вроде «включать CPT только при наличии определённого мета-поля», без фильтров не обойтись.

Пошаговая схема внедрения

  1. Определите, какая карта сайта активна: ядро WordPress или SEO-плагин.
  2. Составьте список URL, которые нужно убрать, и сгруппируйте их по типам.
  3. Выберите минимальный способ: настройка плагина, фильтр для post type, таксономии или отдельных записей.
  4. Внесите изменения в мини-плагин или дочернюю тему.
  5. Очистите кэш страницы, объектный кэш и кэш CDN, если он есть.
  6. Проверьте XML-карту и убедитесь, что лишние URL исчезли.

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

Проверка должна быть не визуальной, а технической. Откройте сам sitemap и убедитесь, что нужных URL там больше нет. Затем проверьте ответ сервера и индексируемость.

  • Откройте /wp-sitemap.xml или sitemap SEO-плагина в браузере.
  • Найдите исключённый URL через поиск по странице.
  • Проверьте, не остался ли он в дочерних sitemap-файлах.
  • Если URL уже был в индексе, посмотрите его статус в Google Search Console.

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

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

Меняют не ту карту сайта

Самая частая ошибка — править встроенный sitemap WordPress, когда на сайте уже работает SEO-плагин. В результате изменения не видны, потому что реальный источник другой. Сначала найдите активный endpoint, потом вносите правки.

Скрывают URL из sitemap, но оставляют их открытыми для индексации

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

Ломают архивы или шаблоны при отключении CPT

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

Оставляют старый кэш

После правки sitemap старый XML может продолжать отдаваться из кэша. Это особенно заметно на сайтах с плагинами кэширования и CDN. Очистка кэша — обязательный шаг, иначе проверка даст ложный результат.

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

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

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

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

Если вы не уверены, нужен ли URL в индексации, не убирайте его из sitemap только ради «чистоты». Иногда страница не приносит трафик сейчас, но остаётся важной для навигации или внутренней перелинковки. В таких случаях сначала проверьте Search Console, логи обхода и реальные входы из поиска, а уже потом режьте карту сайта.

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

Как защитить REST API WordPress от неавторизованных запросов
16.02.2026
WooCommerce: автоматическое удаление пользователя при отмене подписки
20.05.2026
WordPress кастомные редиректы после входа: настройка и практические примеры
13.11.2025
WordPress уведомления о входе: как настроить кастомные email-уведомления для администраторов
11.01.2026
WordPress авторизация через Google OTP: полное руководство
09.04.2026