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

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

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

Когда это нужно и как понять, что проблема именно в sitemap

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

Признаки, что sitemap пора чистить

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

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

Диагностика: что именно отдаёт WordPress в XML sitemap

В WordPress core XML sitemap включён по умолчанию начиная с 5.5. Он строится на основе публичных типов записей и таксономий. Это значит, что если CPT зарегистрирован как public и show_in_rest здесь ни при чём, он может попасть в карту сайта автоматически.

Проверьте список типов записей на сайте:

wp post-type list --fields=name,public,show_in_rest,has_archive

Если WP-CLI недоступен, откройте исходный код sitemap и посмотрите, какие разделы там есть. Обычно это что-то вроде /wp-sitemap-posts-post-1.xml, /wp-sitemap-posts-page-1.xml и отдельные карты для CPT.

Полезно также проверить, не создаёт ли sitemap плагин SEO. Если активен Yoast, Rank Math или похожее решение, core sitemap может быть отключён или заменён. Тогда править нужно именно настройки плагина, а не фильтры WordPress core.

Пошаговое решение через фильтр wp_sitemaps_post_types

Самый чистый вариант — исключить ненужные типы записей через фильтр wp_sitemaps_post_types. Он позволяет изменить список пост-типов, которые WordPress включает в sitemap.

Добавьте код в functions.php дочерней темы или в небольшой mu-plugin. Для продакшена mu-plugin обычно надёжнее: он не зависит от темы и не исчезнет после обновления.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    $exclude = array( 'attachment', 'event', 'landing' );

    foreach ( $exclude as $post_type ) {
        if ( isset( $post_types[ $post_type ] ) ) {
            unset( $post_types[ $post_type ] );
        }
    }

    return $post_types;
} );

В этом примере из sitemap убираются вложения и два пользовательских типа записей: event и landing. Названия замените на свои реальные slug.

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

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    $allowed = array( 'post', 'page' );

    return array_intersect_key( $post_types, array_flip( $allowed ) );
} );

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

Сравнение подходов: код, плагин или настройка SEO-плагина

ПодходКогда подходитПлюсыМинусы
Фильтр WordPressНужен точечный контроль над core sitemapБез лишних зависимостей, прозрачно, быстроНужно понимать, какие CPT реально используются
SEO-плагинSitemap уже управляется плагиномУдобно для редактора, часто есть интерфейсЛогика зависит от конкретного плагина и его настроек
robots.txtНужно закрыть обход, но не менять sitemapПросто добавить директивуНе убирает URL из карты сайта и не решает шум в sitemap

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

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

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

  1. Откройте /wp-sitemap.xml и проверьте список ссылок на карты.
  2. Перейдите в конкретную карту, например /wp-sitemap-posts-post-1.xml.
  3. Убедитесь, что исключённый тип записей больше не присутствует в списке.
  4. Если используете Search Console, отправьте sitemap на повторную обработку.
  5. Проверьте, не остались ли старые URL в индексе отдельно — это уже вопрос переобхода и удаления, а не генерации sitemap.

Для быстрой проверки можно использовать curl:

curl -s https://example.com/wp-sitemap.xml | grep -E 'attachment|event|landing'

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

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

Ошибка 1. Отключили sitemap целиком вместо одного типа

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

Ошибка 2. Скрыли URL в robots.txt, но оставили их в sitemap

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

Ошибка 3. Не учли плагин SEO

Если sitemap отдаёт Yoast, Rank Math или другой SEO-плагин, core-фильтр WordPress может вообще не сработать. В этом случае сначала проверьте, кто именно генерирует карту сайта, и меняйте настройки там.

Ошибка 4. Использовали неправильный slug CPT

В коде нужно указывать реальный ключ типа записи, а не его название в админке. Если сомневаетесь, посмотрите регистрацию CPT в коде темы или плагина, либо выведите список через WP-CLI.

Что ещё стоит проверить, чтобы не получить лишние URL

Если вы чистите sitemap, имеет смысл заодно проверить соседние источники дублей и мусора. Часто проблема не в одном типе записей, а в связке: вложения, архивы, параметры фильтров, служебные страницы, тестовые CPT.

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

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

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

Сам фильтр лёгкий и почти не влияет на производительность. Но проблемы обычно возникают не в нём, а в способе внедрения. Не правьте код напрямую в родительской теме, если сайт живой и тема обновляется. Используйте дочернюю тему или mu-plugin.

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

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

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

Как отключить открытые архивы целей в WordPress и не ломать индексацию
05.09.2026
Как отключить архивы дат в WordPress и не сломать индексацию
08.09.2026
Как отключить XML sitemap для отдельных типов записей в WordPress и не сломать индексацию
22.09.2026
Как отключить открытые XML sitemap в WordPress и оставить только нужные страницы
25.08.2026
Как отключить архивы таксономий в WordPress и не потерять индексацию
11.09.2026

Поддержка по WP: консультации по работе с движком, созданию контента, настройке тем и плагинов.