wpfinder.ru wordpress wpfinder.ru

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

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

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

Когда проблема действительно в sitemap

Не каждый лишний URL в индексе появляется из-за карты сайта, но sitemap часто ускоряет попадание мусора в поиск. Это особенно заметно, если:

  • в sitemap есть attachment-страницы, которые не нужны в выдаче;
  • в карту попадают служебные CPT вроде log, event_log, revision или внутренние записи плагинов;
  • в XML видны таксономии без контента или с тонкими страницами;
  • в sitemap остаются архивы, которые вы уже закрыли от индексации, но они продолжают генерироваться;
  • поисковик регулярно показывает в отчётах URL, которых пользователь на сайте вообще не должен видеть.

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

Сначала откройте сам sitemap в браузере и посмотрите, какие именно URL туда попадают. Обычно это /wp-sitemap.xml в ядре WordPress или отдельный sitemap от SEO-плагина. Дальше сопоставьте проблемные URL с типом записи, таксономией или архивом. Без этого легко убрать не то и потом искать причину просадки индексации.

  • Проверьте, какой плагин генерирует sitemap.
  • Сравните URL из sitemap с типом контента в админке.
  • Убедитесь, что нужные страницы не исчезают из карты случайно.
  • Посмотрите, не дублируется ли sitemap ядра и sitemap SEO-плагина.

Как убрать лишние типы записей из XML sitemap

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

Исключение post type из sitemap ядра

Ниже пример, который убирает из sitemap служебный тип записи event_log. Код лучше размещать в мини-плагине или в functions.php дочерней темы, если у вас нет отдельного места для кастомизации.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['event_log'] );
    unset( $post_types['revision'] );

    return $post_types;
} );

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

Исключение таксономии из sitemap

Для таксономий работает похожий подход. Например, если у вас есть техническая таксономия internal_tag, её можно убрать из карты сайта так:

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

    return $taxonomies;
} );

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

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

У Yoast SEO, Rank Math и похожих плагинов логика отличается от ядра WordPress. Там обычно проще отключить конкретный тип контента в настройках, чем писать фильтры. Это предпочтительный путь, если вы не хотите поддерживать кастомный код после обновлений.

ПодходКогда подходитМинус
Настройки плагинаЕсли sitemap создаёт SEO-плагинЗависите от интерфейса и логики конкретного плагина
Фильтры WordPressЕсли используете sitemap ядраНужно аккуратно писать код
Кастомный код в темеЕсли правка разовая и проект небольшойСломается при смене темы, если не вынести в мини-плагин

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

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

Ниже рабочая последовательность, которая помогает не сломать индексацию.

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

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

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

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

Что смотреть после правки

  • Откройте sitemap и убедитесь, что удалённые типы записей больше не присутствуют.
  • Проверьте HTTP-ответ: sitemap должен отдавать 200 OK, а не редирект или ошибку.
  • Если используется кэш, обновите его и проверьте XML в режиме инкогнито.
  • В Google Search Console отправьте sitemap повторно и посмотрите, нет ли ошибок чтения.
  • Сравните количество URL до и после, но не делайте выводы по одному дню — поисковая консоль обновляется не мгновенно.

Если вы убирали только часть sitemap, а не весь файл, убедитесь, что остальные разделы остались на месте. Частая ошибка — случайно удалить весь post type, когда нужен был только один служебный объект.

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

Удалили не тот post type

Это случается, когда название типа записи в коде не совпадает с реальным post_type. Проверьте его в регистрации CPT или через плагины для просмотра структуры контента. Если тип называется news, а вы убрали post, ничего не изменится.

Сайт продолжает отдавать старый sitemap

Причина обычно в кэше страницы, серверном кэше или CDN. Очистите все уровни кэширования и проверьте XML напрямую. Если у вас включён объектный кэш, он тоже может удерживать старую структуру.

В индексе остались старые URL

Это нормально: удаление из sitemap не удаляет URL из индекса мгновенно. Если страница больше не нужна, дополнительно проверьте её статус, canonical, noindex и внутренние ссылки. Sitemap — это сигнал для обхода, а не кнопка удаления из поиска.

Код добавили в тему и забыли про обновление

Если правка критична для SEO, лучше вынести её в мини-плагин или MU-plugin. Тогда смена темы не сломает логику sitemap.

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

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее