XML Sitemap в WordPress часто начинает мешать не тогда, когда его «слишком много», а когда в индексе появляются дубли карт, лишние URL из плагинов и темы, а поисковик видит несколько источников одной и той же sitemap. На практике это обычно всплывает после смены SEO-плагина, установки отдельного генератора карты сайта или включения встроенной карты в WordPress 5.5+.
Если в Search Console вы видите несколько sitemap-индексов, а в логах — регулярные запросы к неиспользуемым картам, проще сначала определить источник, а потом уже отключать лишнее. Иначе можно убрать не ту карту и оставить старую, которая продолжит отдавать дубли.
Когда XML Sitemap действительно нужно отключать
Отключение карты сайта оправдано не само по себе, а в конкретных сценариях:
- в WordPress одновременно работает встроенная sitemap и sitemap от SEO-плагина;
- старый плагин карты сайта остался активным после миграции на другой SEO-инструмент;
- в sitemap попадают служебные URL, которые вы не хотите отдавать в индекс;
- на сайте несколько языковых или контентных слоёв, и карта собирается с дублями;
- нужно временно убрать sitemap перед крупной перестройкой структуры сайта.
Если задача только в исключении отдельных типов записей или таксономий, полное отключение обычно не нужно. В этом случае лучше настроить фильтры конкретного генератора карты сайта.
Диагностика: откуда именно берётся sitemap
Сначала проверьте, какой URL реально отдаёт карту сайта. В WordPress core это обычно /wp-sitemap.xml. У SEO-плагинов адрес может быть другим, например /sitemap_index.xml. Если оба URL открываются и оба содержат рабочие карты, у вас уже есть дублирование источников.
Что проверить вручную
- откройте
/wp-sitemap.xmlи посмотрите, отдаёт ли он XML; - откройте sitemap от SEO-плагина и сравните список URL;
- проверьте robots.txt — не прописаны ли там обе карты одновременно;
- посмотрите, не генерирует ли карта кэш-плагин или отдельный модуль темы;
- проверьте, нет ли редиректа со старого sitemap на новый без удаления старого генератора.
Если у вас есть доступ к консоли, полезно быстро проверить заголовки ответа:
curl -I https://example.com/wp-sitemap.xmlИ отдельно:
curl -I https://example.com/sitemap_index.xmlПо ответу видно, какой URL живой, есть ли редирект, и не отдаёт ли сервер неожиданный код вместо XML.
Пошаговое решение: как отключить встроенную sitemap WordPress
Если вы используете SEO-плагин, который уже генерирует карту сайта, встроенную карту WordPress лучше отключить через фильтр. Это безопаснее, чем пытаться блокировать URL через robots.txt: robots.txt не выключает генерацию, а только ограничивает обход.
Добавьте код в functions.php дочерней темы или в небольшой mu-plugin:
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );После этого WordPress перестанет отдавать /wp-sitemap.xml и связанные с ним карты. Если у вас уже есть sitemap от SEO-плагина, он продолжит работать отдельно.
Если нужен более управляемый вариант
Для продакшена удобнее вынести отключение в mu-plugin, чтобы оно не зависело от темы. Создайте файл, например wp-content/mu-plugins/disable-core-sitemap.php:
<?php
/**
* Plugin Name: Disable Core Sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );Такой вариант проще сопровождать: код не исчезнет после смены темы и не потеряется при обновлении.
Как убрать дубли, если sitemap генерирует SEO-плагин
Если карта сайта нужна, но в ней лишние типы контента, сначала ищите настройки самого плагина. У большинства SEO-плагинов можно отключить:
- медиа-вложения;
- пустые или служебные таксономии;
- архивы, которые не должны индексироваться;
- отдельные типы записей;
- авторов, если они не нужны в поиске.
Если плагин не даёт нужной гибкости, можно фильтровать sitemap на уровне WordPress. Для встроенной карты есть фильтры, но они зависят от конкретного типа sitemap. Например, для исключения постов из карты сайта удобнее работать через фильтры генератора, а не через robots.txt.
Ниже пример, который отключает вывод вложений из core sitemap:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );Это не отключает sitemap целиком, а только убирает один тип записей. Такой подход полезен, если карта нужна для записей и страниц, но не для медиафайлов.
Сравнение подходов: плагин, код или robots.txt
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует один плагин и нужно убрать отдельные типы | Без кода, удобно для редактора | Не всегда хватает гибкости |
Фильтр wp_sitemaps_enabled | Если нужно отключить встроенную sitemap WordPress | Просто и надёжно | Требует доступа к коду |
| robots.txt | Только если нужно ограничить обход | Быстро правится | Не отключает генерацию и не убирает дубли |
Если цель — именно убрать дубли, robots.txt сам по себе проблему не решает. Поисковик всё равно может видеть карту, если она доступна по прямому URL.
Проверка результата после внедрения
После отключения или настройки карты сайта проверьте три вещи.
- Открывается ли старый URL sitemap и какой код ответа он отдаёт.
- Осталась ли одна актуальная карта сайта вместо нескольких.
- Нет ли в Search Console сообщений о недоступной или дублирующейся sitemap.
Быстрая проверка через браузер и curl обычно достаточно показывает, что изменилось:
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap_index.xmlЕсли вы отключали core sitemap, первый URL должен перестать отдавать XML-карту. Если вы настраивали SEO-плагин, второй URL должен остаться рабочим, а список внутри карты — соответствовать вашим настройкам.
Частые ошибки и как их исправить
Отключили sitemap в robots.txt, но дубли остались
Это типичная ошибка. robots.txt не выключает генерацию карты, а только ограничивает обход. Если sitemap доступна по прямому адресу, поисковик всё равно может её использовать. Решение — отключить генератор или убрать лишний источник карты.
Удалили не тот sitemap и потеряли нужные URL
Так бывает после миграции с одного SEO-плагина на другой. Сначала проверьте, какой плагин сейчас отвечает за sitemap, и только потом выключайте встроенную карту WordPress. Если отключить всё сразу, можно остаться без актуальной карты на несколько дней.
Карта сайта продолжает открываться после отключения
Причина часто в кэше: серверном, плагине кэширования или CDN. Очистите кэш страницы, объектный кэш, если он есть, и проверьте URL в приватном окне или через curl -I.
В sitemap остаются вложения и служебные записи
Значит, отключение было слишком грубым или настройки плагина не затронули нужный тип контента. В этом случае лучше не выключать sitemap целиком, а убрать конкретные типы записей через настройки или фильтры.
Практические советы по безопасности и производительности
Не храните отключение sitemap в случайном сниппете из админки, если сайт активно обновляется командой. Для таких правок лучше использовать mu-plugin или отдельный мини-плагин в репозитории проекта. Так проще отследить изменения и не потерять их при деплое.
Если sitemap генерируется тяжело из-за большого количества записей, проверьте, не создаёт ли её лишнюю нагрузку сторонний плагин. Иногда достаточно оставить встроенную карту WordPress и убрать дублирующий генератор. В других случаях наоборот — встроенную карту лучше отключить, а оставить более гибкий SEO-плагин.
Если вам нужен более широкий набор инструментов для чистки дублей и технической оптимизации, в экосистеме WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpplugins.ru&utm_medium=article&utm_campaign=otklyuchit-xml-sitemap-v-wordpress. Но даже с таким плагином сначала стоит понять, какой именно sitemap создаёт конфликт, иначе можно лечить не причину, а симптом.
Самый надёжный порядок действий здесь простой: найти источник карты, отключить лишний генератор, проверить один рабочий sitemap и только потом отправлять изменения в Search Console. Это экономит время и не ломает индексацию на ровном месте.