WordPress Notes WPTips

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

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

Ниже разберем рабочие варианты для WordPress 5.5+ с встроенным sitemap, а также покажу, как проверить результат и где чаще всего ошибаются.

Когда sitemap нужно чистить, а не отключать полностью

Полное отключение карты сайта имеет смысл редко. Чаще проблема в том, что в ней оказываются:

  • черновые или служебные post_type;
  • страницы с дублями контента;
  • таксономии, которые существуют только технически;
  • авторские архивы на сайте с одним автором;
  • медиа-attachment страницы, если они не нужны в поиске.

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

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

Сначала посмотрите, какие карты реально отдает сайт. У WordPress встроенный индекс обычно доступен по адресу /wp-sitemap.xml. Дальше проверьте отдельные секции: записи, страницы, авторов, категории, пользовательские типы записей.

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

Что проверить перед правкой

  • Есть ли у лишнего типа записей публичный URL.
  • Нужен ли он пользователям из поиска.
  • Не закрыт ли он уже через noindex или robots.txt.
  • Не дублирует ли он контент из другого раздела.

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

Пошаговое решение через код

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

1. Убрать целый тип записей из sitemap

Для пользовательского типа записей можно отключить его попадание в sitemap через фильтр wp_sitemaps_post_types. Пример ниже убирает portfolio и reviews:

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['portfolio'] );
    unset( $post_types['reviews'] );

    return $post_types;
} );

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

2. Убрать таксономию из sitemap

Для категорий, тегов и пользовательских таксономий используется фильтр wp_sitemaps_taxonomies. Например, если на сайте есть техническая таксономия brand, которую не нужно отдавать в карту:

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

    return $taxonomies;
} );

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

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

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

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

    return $args;
}, 10, 2 );

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

4. Отключить sitemap для attachment-страниц

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

Что делать, если sitemap генерирует SEO-плагин

Если карту сайта создает не WordPress, а SEO-плагин, фильтры ядра могут не сработать. Тогда сначала найдите, кто именно отвечает за sitemap: встроенный генератор WordPress, Yoast SEO, Rank Math, All in One SEO или другой плагин. У каждого свои настройки и свои фильтры.

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

ПодходКогда использоватьМинус
Настройки плагинаЕсли sitemap делает SEO-плагинЗависите от интерфейса и логики плагина
Фильтры WordPressЕсли используется встроенный sitemapНужно править код темы или мини-плагина
Отключение типа записей при регистрацииЕсли CPT не должен индексироваться вообщеМожет повлиять на публичные URL и архивы

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

После правок не ограничивайтесь открытием /wp-sitemap.xml в браузере. Проверьте несколько уровней:

  1. Откройте индекс sitemap и убедитесь, что лишний раздел исчез.
  2. Проверьте конкретный файл sitemap для нужного типа записей или таксономии.
  3. Сравните список URL с тем, что реально должно индексироваться.
  4. Если сайт уже отправлен в Google Search Console, посмотрите, не остались ли старые URL в отчетах.

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

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

Ошибка 1. Отключили sitemap через robots.txt

Это не решает задачу. Robots.txt не убирает URL из уже сгенерированной карты сайта. Если лишний раздел все еще отдается в XML, поисковик его увидит.

Ошибка 2. Убрали тип записей, но забыли про архив

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

Ошибка 3. Смешали встроенный sitemap и SEO-плагин

Когда одновременно включены два генератора карт сайта, диагностика становится бессмысленной. Оставьте один источник и отключите второй, иначе будете ловить дубли и несоответствия.

Ошибка 4. Исключили записи из sitemap, но не закрыли мусорные URL

Если URL уже проиндексирован, одного удаления из sitemap может быть мало. Иногда нужен noindex или 301-редирект на релевантную страницу.

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

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

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

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

Мини-чек-лист перед публикацией изменений

  • Проверил, кто генерирует sitemap: ядро WordPress или SEO-плагин.
  • Убрал только те типы записей и таксономии, которые не должны индексироваться.
  • Не оставил дублирующую генерацию sitemap.
  • Открыл /wp-sitemap.xml и проверил структуру.
  • Сверил изменения в Search Console после переобхода.

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

×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙