WordPress Notes WPBit

Как отключить отдельные XML sitemap в WordPress и оставить нужные страницы в индексе

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

Когда это вообще нужно

Чаще всего проблема появляется после установки SEO-плагина или после миграции сайта. В админке всё выглядит нормально, но в /sitemap_index.xml появляются карты, которые не несут ценности для поиска. Это не всегда критично, но лишние URL в sitemap создают шум: поисковик тратит краулинговый бюджет на страницы, которые вы и так не хотите продвигать.

Типичные сценарии:

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

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

Сначала не правьте код вслепую. Откройте индекс карты сайта и посмотрите, какие подкарты реально отдаются:

https://example.com/sitemap_index.xml

Если у вас Yoast SEO, Rank Math или другой SEO-плагин, структура будет зависеть от него. Важно понять, где именно лежит лишний раздел: в индексной карте, в карте таксономии или в карте медиа.

Проверка через браузер и curl

Быстрый способ — посмотреть ответ сервера и убедиться, что карта вообще доступна:

curl -I https://example.com/sitemap_index.xml

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

Как отключить отдельные sitemap без отключения всей карты сайта

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

ПодходКогда подходитПлюсМинус
Настройки SEO-плагинаЕсли карта генерируется Yoast SEO, Rank Math и т.п.Без кода, быстроНе всегда есть точечный контроль
Код через фильтрыЕсли нужен точный список исключенийКонтроль на уровне темы или mu-pluginНужно аккуратно тестировать
Отключение публичности типа контентаЕсли лишний sitemap идет от CPT или таксономииЛогично и прозрачноМожет повлиять на архивы и ссылки

Вариант 1. Убрать лишнее в настройках SEO-плагина

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

Если у вас Rank Math, проверьте разделы, связанные с sitemap и индексируемыми типами записей. Логика та же: не трогать всю карту, а убрать только те сущности, которые не должны попадать в индекс.

Это самый безопасный путь, если плагин уже умеет делать нужную фильтрацию. Но если интерфейс не дает убрать конкретный тип, проще перейти к коду.

Вариант 2. Исключить типы записей из sitemap через код

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );
    unset( $post_types['product'] ); // если это не нужно именно в sitemap

    return $post_types;
} );

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

Вариант 3. Убрать отдельные таксономии

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

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

    return $taxonomies;
} );

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

Если нужен точечный контроль в теме или плагине

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

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

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

    return $post_types;
} );

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

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

После изменений не ограничивайтесь открытием главной карты сайта. Проверьте конкретные URL, которые должны исчезнуть.

  • Откройте /sitemap_index.xml и убедитесь, что лишняя подкарта пропала.
  • Проверьте прямой URL подкарты, например /post-sitemap.xml или /taxonomy-sitemap.xml.
  • Сделайте curl -I и убедитесь, что ответ не стал 404 там, где карта должна остаться доступной.
  • Если используете Search Console, отправьте карту сайта на повторную проверку после обновления.

Важно: если вы убрали тип записи из sitemap, но он всё ещё доступен по прямой ссылке, это нормально. Sitemap — это только список для обхода, а не механизм блокировки.

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

Отключили sitemap через robots.txt

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

Сломали карту сайта целиком

Так бывает, если фильтр возвращает пустой массив или код вставлен с ошибкой. Проверьте, что вы удаляете только нужные ключи, а не перезаписываете весь массив. Для теста сначала отключите один тип, потом второй.

Убрали таксономию, но архивы остались в индексе

Это ожидаемо. Sitemap и индексация архивов — разные вещи. Если архивы не нужны, дополнительно проверьте настройки SEO-плагина, мета robots и внутренние ссылки на эти страницы.

Вставили код в активную тему и забыли про обновление

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

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

  • Понял, какой именно sitemap нужно убрать.
  • Проверил, не отключаю ли я всю карту сайта случайно.
  • Сделал правку через настройку плагина или фильтр WordPress.
  • Проверил /sitemap_index.xml и конкретные подкарты.
  • Убедился, что важные записи и страницы остались в sitemap.
  • Обновил карту сайта в Search Console, если это нужно.

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

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

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

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше