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

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

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

Когда sitemap нужно чистить вручную

Если карта сайта содержит URL, которые вы не хотите отдавать поисковикам, это не всегда ошибка генератора. Часто WordPress честно собирает всё, что считает публичным: записи, страницы, вложения, custom post types, рубрики, теги, авторов. Проблема начинается, когда в индекс попадают:

  • служебные CPT вроде landing, popup, template;
  • архивы таксономий с пустым или дублирующимся контентом;
  • медиа-вложения, которые создают отдельные страницы attachment;
  • страницы фильтров, тегов и внутренних подборок;
  • контент, который уже закрыт noindex, но всё ещё торчит в sitemap.

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

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

Сначала нужно понять, кто генерирует карту сайта. В WordPress это может быть встроенный XML sitemap ядра, Yoast SEO, Rank Math, All in One SEO или другой плагин. Если вы начнёте править код вслепую, легко получить ситуацию, когда один sitemap вычистили, а второй остался и продолжает отдавать лишние URL.

Что проверить в первую очередь

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

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

Способы убрать лишние URL из XML sitemap

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

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

Вариант 1. Убрать тип записи из встроенного sitemap WordPress

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

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['landing'] );
    unset( $post_types['popup'] );

    return $post_types;
} );

Код лучше добавлять в мини-плагин или в functions.php дочерней темы, а не в родительскую тему. Иначе при обновлении всё потеряется.

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

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

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    unset( $taxonomies['product_cat'] );

    return $taxonomies;
} );

Этот вариант не закрывает таксономию от индексации сам по себе. Он только убирает её из sitemap. Если архивы уже доступны по URL и индексируются, дополнительно проверьте meta robots и настройки SEO-плагина.

Вариант 3. Убрать отдельные URL через фильтр sitemap entries

Когда нужно исключить не весь тип записей, а только часть URL, используйте фильтр wp_sitemaps_posts_pre_url_list или wp_sitemaps_posts_query_args в зависимости от задачи. Для большинства практических случаев проще отфильтровать список URL перед выводом.

add_filter( 'wp_sitemaps_posts_pre_url_list', function( $url_list, $post_type ) {
    if ( 'post' !== $post_type ) {
        return $url_list;
    }

    return array_values( array_filter( $url_list, function( $url_item ) {
        return false === strpos( $url_item['loc'], '/tag/' );
    } ) );
}, 10, 2 );

Этот пример показывает принцип, но на практике лучше фильтровать по ID, статусу записи или конкретному post type, а не по строке URL. Строковые проверки хрупкие: смените структуру ссылок — и фильтр начнёт работать неправильно.

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

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

Что обычно отключают в интерфейсе

  • медиа attachments;
  • теги;
  • архивы авторов;
  • служебные CPT;
  • пустые таксономии;
  • страницы пагинации, если плагин их отдельно выводит.

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

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

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

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

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

  • Откройте sitemap в браузере и убедитесь, что лишних URL больше нет.
  • Проверьте исходный XML, а не только визуальный рендер.
  • Если есть кеш-плагин, сбросьте кеш и повторно запросите sitemap.
  • В Google Search Console отправьте обновлённую карту сайта и посмотрите, нет ли ошибок обработки.
  • Проверьте, не остались ли старые URL в отдельных sitemap-файлах, если карта разбита по типам.

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

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

Правят не тот sitemap

Самая частая ситуация: в WordPress одновременно активен встроенный sitemap и sitemap SEO-плагина. В итоге вы чистите один файл, а поисковики продолжают получать другой. Решение простое: оставьте один источник sitemap и отключите второй.

Путают удаление из sitemap с запретом на индексацию

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

Фильтруют URL по строке

Проверка через strpos() по адресу страницы выглядит быстро, но ломается при смене структуры ссылок, языка сайта или домена. Надёжнее фильтровать по ID записи, post type или таксономии.

Забывают про кеш

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

Скрывают важные страницы вместе с мусором

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

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

Фильтры sitemap почти не нагружают сайт, если написаны аккуратно. Но есть несколько практических правил:

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

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

В рабочем проекте обычно хватает простой схемы: один источник sitemap, точечные фильтры для лишних сущностей и обязательная проверка в Search Console после каждого изменения. Это быстрее и надёжнее, чем пытаться «починить индексацию» через один только XML-файл.

Как автоматизировать создание задач в WordPress с помощью плагинов
14.09.2026
Как создать автоматическое резервное копирование в WordPress
14.09.2026
Как создать автоматическое распределение задач в WordPress
14.09.2026
Автоматическое удаление старых записей по метаключам в WordPress
14.09.2026
Как создать собственный breadcrumb в WordPress с поддержкой Schema.org
14.09.2026