В WordPress встроенная XML-карта сайта появилась сравнительно недавно, и в большинстве проектов она работает без вмешательства. Но на практике часто возникает другая ситуация: sitemap уже генерирует SEO-плагин, карта дублируется, в индексе появляются лишние URL, а в Search Console всплывают предупреждения по недоступным или неканоническим адресам. В таких случаях проще не «лечить» симптомы, а отключить стандартный механизм и оставить один контролируемый источник sitemap.
Когда встроенный sitemap действительно мешает
Проблема обычно проявляется не на фронтенде, а в технических отчетах и логах. Типичные сценарии:
- установлен Yoast SEO, Rank Math, All in One SEO или другой плагин, который уже отдает собственный sitemap;
- в выдаче есть два разных sitemap index, и поисковик ходит в оба;
- встроенный sitemap включает типы записей или таксономии, которые вы не хотите индексировать;
- после миграции остались старые URL, а карта сайта продолжает их публиковать;
- кэш или CDN отдают старую версию sitemap, хотя настройки уже изменены.
Если у вас уже есть статья про запрет индексации отдельных страниц, это не тот же случай: здесь речь не про noindex на конкретных URL, а про сам источник XML-карты сайта.
Диагностика: что именно сейчас отдает sitemap
Перед изменениями нужно понять, кто генерирует карту сайта и какой адрес реально открывается. В WordPress core sitemap обычно доступен по /wp-sitemap.xml. SEO-плагины часто используют собственный индекс, например /sitemap_index.xml или похожий путь.
Проверка вручную
Откройте в браузере и сравните ответы:
https://site.ru/wp-sitemap.xmlhttps://site.ru/sitemap_index.xml
Если оба адреса отдают XML и оба доступны, у вас уже есть дублирование. Дальше смотрим, какой из них должен остаться основным.
Проверка через curl
curl -I https://site.ru/wp-sitemap.xml
curl -I https://site.ru/sitemap_index.xmlИщите не только 200 OK, но и заголовок Content-Type. Для XML-карты он должен быть корректным, а не text/html. Если отдается HTML-страница ошибки, поисковик может считать карту недоступной.
Как отключить встроенный sitemap WordPress
Самый безопасный способ — убрать генерацию через фильтр wp_sitemaps_enabled. Это штатный фильтр WordPress, он не требует хаков ядра и не ломает обновления.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Код можно добавить в functions.php дочерней темы, но на практике надежнее вынести его в небольшой mu-plugin, чтобы он не зависел от темы.
Вариант через mu-plugin
<?php
/**
* Plugin Name: Disable Core XML Sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );Файл положите в wp-content/mu-plugins/disable-core-sitemap.php. Если папки mu-plugins нет, создайте ее вручную.
Если sitemap генерирует SEO-плагин: что оставить, а что убрать
Когда у вас уже работает sitemap от SEO-плагина, задача обычно не в полном отключении, а в устранении дублей. Сначала проверьте настройки самого плагина:
- не включены ли одновременно XML sitemap ядра и sitemap плагина;
- не публикуются ли в карту сайта архивы, которые вы не хотите индексировать;
- не попадают ли в sitemap медиа-страницы, теги или служебные таксономии без необходимости;
- не создает ли плагин отдельные sitemap для типов записей, которые закрыты от индексации.
Если плагин не дает убрать конкретный тип записей через интерфейс, иногда проще фильтровать его программно. Но здесь важно не выдумывать несуществующие хуки: сначала проверьте документацию именно вашего SEO-плагина. У разных решений названия фильтров отличаются.
Сравнение подходов: плагин, код или комбинация
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Только настройки SEO-плагина | Если плагин полностью контролирует sitemap | Без кода, проще поддерживать | Не всегда можно убрать все лишнее |
Фильтр wp_sitemaps_enabled | Если нужен полный отказ от core sitemap | Штатный механизм WordPress, надежно | Нужно убедиться, что альтернативный sitemap уже есть |
| Комбинация: отключить core и оставить SEO-плагин | Самый частый продакшен-сценарий | Один источник карты сайта, меньше дублей | Требует проверки после обновлений плагина |
Пошаговое решение без лишнего риска
- Проверьте, какой sitemap сейчас открыт по
/wp-sitemap.xmlи/sitemap_index.xml. - Убедитесь, что SEO-плагин уже генерирует рабочую карту сайта.
- Добавьте
add_filter( 'wp_sitemaps_enabled', '__return_false' );в mu-plugin или дочернюю тему. - Очистите кэш сайта, серверный кэш и CDN, если они есть.
- Проверьте, что
/wp-sitemap.xmlбольше не отдает XML. - Отправьте в Search Console только тот sitemap, который должен остаться основным.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. После внедрения откройте адрес core sitemap и убедитесь, что он больше не доступен как XML. Нормальные варианты ответа:
404 Not Found;410 Gone;- редирект на основной sitemap, если вы специально так настроили.
Дальше проверьте основной sitemap-путь SEO-плагина. Он должен открываться без ошибок и содержать только нужные URL. Если карта сайта кэшируется, обновление может не появиться сразу — тогда проверьте серверный кэш и CDN.
curl -I https://site.ru/wp-sitemap.xml
curl -I https://site.ru/sitemap_index.xml
curl https://site.ru/sitemap_index.xml | headЕсли в ответе на /wp-sitemap.xml по-прежнему 200 OK и XML, значит фильтр не сработал или код подключен не туда.
Частые ошибки и как их исправить
Отключили sitemap, но забыли включить альтернативу
Это самая неприятная ошибка. В результате поисковик теряет карту сайта целиком. Перед отключением core sitemap убедитесь, что другой sitemap уже работает и доступен без авторизации.
Добавили код в тему, а потом сменили тему
Если фильтр лежит в functions.php, при смене темы он исчезает. Для технических настроек лучше использовать mu-plugin или отдельный мини-плагин.
Проверили только браузером, но не очистили кэш
Браузер может показывать старый XML из локального кэша. Проверяйте через curl -I и в режиме инкогнито, а после изменений сбрасывайте кэш плагина, сервера и CDN.
Отключили core sitemap, но остались дубли из медиа и архивов
Это уже вопрос настроек SEO-плагина. Сам фильтр WordPress не управляет содержимым стороннего sitemap. Нужно отдельно проверить, какие типы записей и таксономии включены в карту сайта.
Безопасность и производительность: что учесть
Отключение встроенного sitemap само по себе не ускоряет сайт заметно, но снижает путаницу в индексации и уменьшает количество лишних обращений к разным XML-адресам. Если сайт большой, это полезно еще и для поддержки: один источник проще мониторить, чем два конкурирующих.
С точки зрения безопасности не стоит оставлять sitemap, который раскрывает служебные типы записей, черновые структуры или приватные таксономии. Карта сайта не заменяет контроль доступа, но она помогает поисковику и внешним сервисам быстрее увидеть лишнее.
Если у вас уже стоит набор для технической чистки сайта, например Clearfy Pro, проверьте, не дублирует ли он часть настроек SEO-плагина. В таких связках важно не включать одно и то же в двух местах.
Когда лучше не отключать core sitemap
Если на сайте нет SEO-плагина, а карта сайта нужна только базово, встроенный механизм WordPress вполне подходит. Также не стоит отключать его «на всякий случай», если вы не проверили, кто именно сейчас отдает sitemap. В проектах с нестандартной архитектурой иногда core sitemap используют как запасной источник, и тогда его отключение должно быть осознанным.
Практическое правило простое: оставляйте один sitemap, который вы реально контролируете. Все остальное — источник дублей, лишних проверок и путаницы в отчетах.