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

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

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

Когда XML Sitemap начинает раздуваться

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

Сначала важно понять, кто именно генерирует карту сайта. В WordPress это может быть:

  • встроенная XML Sitemap ядра WordPress;
  • SEO-плагин, который подменяет или расширяет карту сайта;
  • кастомный код темы или плагина;
  • отдельный плагин для sitemap.

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

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

Диагностика: откуда берутся лишние URL

Если сайт использует встроенную карту WordPress, проверьте, какие типы контента зарегистрированы как публичные. Для кастомных типов записей это определяется при register_post_type(). Если у типа стоит 'public' => true и 'show_in_rest' => true, он часто попадает в карту сайта автоматически, если не отключен отдельно.

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

Удобный способ диагностики — открыть sitemap в браузере и посмотреть, какие именно разделы там есть. Если нужен быстрый технический чек, можно использовать консоль:

curl -I https://example.com/wp-sitemap.xml

Ответ должен быть 200 OK. Если вместо этого идет редирект на другой sitemap, значит карта генерируется не ядром, а плагином или кастомным кодом.

Как отключить лишние типы записей из sitemap

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

СпособКогда подходитПлюсМинус
Настройки SEO-плагинаЕсли sitemap генерирует плагинБез кодаНе всегда хватает гибкости
Фильтр в functions.php или mu-pluginЕсли нужен точечный контрольРаботает на уровне кодаНужно аккуратно тестировать
Изменение register_post_type()Если это ваш CPTЧистое решение на уровне регистрацииМожет повлиять и на фронтенд

Вариант 1: отключить тип записи из встроенной sitemap WordPress

Если используется ядро WordPress, можно скрыть конкретный тип записи через фильтр wp_sitemaps_post_types. Это безопаснее, чем пытаться править вывод HTML или закрывать URL через robots.txt.

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

    return $post_types;
} );

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

Вариант 2: убрать таксономию из карты сайта

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

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

    return $taxonomies;
} );

Такой подход полезен, когда таксономия существует для внутренней навигации, но не должна раздувать sitemap.

Вариант 3: отключить sitemap для конкретного CPT на уровне регистрации

Если вы сами регистрируете тип записи, проще сразу задать нужное поведение в register_post_type(). Для встроенной sitemap WordPress можно явно отключить показ в карте сайта через аргумент show_in_sitemap, если он поддерживается вашей версией ядра.

register_post_type( 'landing', array(
    'label'           => 'Landing pages',
    'public'          => true,
    'show_in_rest'    => true,
    'show_in_sitemap' => false,
    'supports'        => array( 'title', 'editor', 'thumbnail' ),
) );

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

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

У популярных SEO-плагинов логика отличается от ядра, но принцип тот же: ищите настройку для типов записей, таксономий и архивов. Обычно это находится в разделе XML Sitemap или Search Appearance. Там можно отключить нужный тип контента без правки кода.

Если интерфейс не помогает, проверьте, не переопределяет ли sitemap другой плагин. На практике конфликт возникает, когда одновременно активны несколько решений для SEO или генерации карты сайта.

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

Пошаговое решение без лишнего риска

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

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

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

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

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

Дополнительно проверьте:

  • не остались ли старые версии sitemap в кеше;
  • не отдает ли CDN устаревший XML;
  • не генерирует ли другой плагин вторую карту сайта;
  • не закрыт ли URL в robots.txt, если он все еще нужен для обхода, но не для индексации.

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

Отключили URL в robots.txt вместо sitemap

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

Скрыли тип записи, но не очистили кеш

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

Отключили CPT в sitemap, но он все еще в индексе

Если URL уже успели попасть в поиск, одного удаления из sitemap мало. Нужны либо корректные мета-теги noindex, либо 404/410 для реально ненужных страниц, либо редирект на актуальный адрес.

Использовали неправильный ключ типа записи

В фильтрах нужно указывать именно post_type или taxonomy slug, а не произвольное название из админки. Если slug неизвестен, посмотрите регистрацию в коде или через плагин для просмотра типов записей.

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

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

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

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

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

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

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

Как отключить XML Sitemap для отдельных типов записей в WordPress
02.09.2026
Как отключить архив авторов в WordPress без потери SEO
22.08.2026
Как отключить XML-RPC в WordPress и не сломать нужные интеграции
18.08.2026
Как закрыть дубли страниц от индексации в WordPress
15.08.2026
Как отключить архив таксономии в WordPress без потери SEO
30.08.2026