XML-карта сайта в WordPress обычно полезна, но на живых проектах она иногда начинает мешать: дублируется из-за нескольких плагинов, содержит мусорные URL, отдаёт 404 после миграции или конфликтует с внешней генерацией sitemap. В таких случаях лучше не оставлять всё как есть, а отключить лишний источник и проверить, что поисковики видят только нужные адреса.
Ниже — практический разбор: как понять, что именно ломается, как отключить XML-карту сайта в ядре WordPress или в плагине, и как проверить результат без гадания по логам.
Когда XML-карта сайта становится проблемой
Сама по себе sitemap не вредна. Проблемы начинаются, когда в проекте появляется больше одного генератора или карта содержит URL, которые не должны индексироваться. Типичные сценарии:
- включена встроенная sitemap WordPress и одновременно работает SEO-плагин со своей картой;
- после переноса сайта в карте остались старые домены, категории или вложения;
- в sitemap попадают служебные типы записей, черновики, вложения без контента;
- карта сайта отдаёт ошибки, а в Search Console появляются сообщения о недоступных URL;
- нужно временно отключить sitemap на staging-сайте, чтобы он не светился в индексе.
Диагностика: что именно нужно отключать
Сначала стоит понять, откуда берётся sitemap. В WordPress 5.5+ базовая XML-карта может генерироваться ядром по адресу /wp-sitemap.xml. Но многие SEO-плагины создают собственную карту и могут отключать или заменять ядро.
Проверьте адреса вручную
Откройте в браузере и посмотрите ответ сервера:
/wp-sitemap.xml— встроенная карта WordPress;/sitemap.xml— часто карта от SEO-плагина;/sitemap_index.xml— типичный индекс карт у плагинов вроде Yoast SEO или Rank Math.
Если открываются сразу несколько вариантов, это уже повод навести порядок. Для проверки можно использовать и команду:
curl -I https://example.com/wp-sitemap.xmlНужны два признака: код ответа и конечный адрес. Если вместо 200 вы видите 301/302 на другой sitemap, значит карта переехала в плагин. Если 404 — источник уже отключён или сломан.
Посмотрите, кто генерирует карту
Если на сайте стоит SEO-плагин, сначала проверьте его настройки. Во многих случаях правильнее отключить встроенную карту WordPress, а не ломать генерацию плагина. И наоборот: если SEO-плагин не нужен, можно оставить ядро и убрать лишний слой.
| Подход | Когда подходит | Минус |
|---|---|---|
| Отключить sitemap в плагине | Если SEO-плагин уже генерирует свою карту | Нужно знать настройки конкретного плагина |
| Отключить встроенную карту WordPress кодом | Если используете внешнюю sitemap | Нужно править тему или мини-плагин |
| Оставить обе карты | Почти никогда | Дубли и путаница для поисковиков |
Пошаговое решение: отключаем XML-карту сайта в WordPress
Вариант 1. Отключить встроенную sitemap ядра
Если у вас уже есть sitemap от SEO-плагина, встроенную карту WordPress лучше выключить. Для этого добавьте фильтр в functions.php дочерней темы или в небольшой mu-plugin:
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );После этого адрес /wp-sitemap.xml должен перестать открываться. Это самый прямой способ, и он не зависит от интерфейса темы.
Вариант 2. Отключить sitemap в SEO-плагине
Если sitemap генерирует плагин, отключайте её в его настройках. Логика у разных решений отличается, но принцип один: оставить только один источник карты сайта. В интерфейсе обычно есть отдельный переключатель для XML sitemap, иногда — для конкретных типов записей и таксономий.
Важно не просто выключить индекс карт, а проверить, не осталась ли старая ссылка в robots.txt, в кэше или в настройках Search Console.
Вариант 3. Скрыть отдельные типы записей из карты
Иногда отключать sitemap целиком не нужно. Например, вы хотите убрать из карты вложения, служебные записи или приватные CPT. Для встроенной карты WordPress можно точечно исключить типы записей через фильтр:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['attachment'] );
unset( $post_types['revision'] );
return $post_types;
} );Это полезно, если карта нужна, но в ней слишком много мусора. Такой подход лучше, чем отключать всё целиком, когда проблема только в одном типе контента.
Проверка результата после внедрения
После изменений не ограничивайтесь открытием страницы в браузере. Проверьте несколько уровней:
- HTTP-ответ —
200для нужной карты или404для отключённой; - содержимое — в карте нет старых доменов, лишних типов записей и служебных URL;
- robots.txt — нет устаревшей ссылки на старую sitemap;
- Search Console — новая карта отправлена, старая удалена или заменена;
- кэш — серверный и плагин-кэш очищены после правки.
Быстрая проверка через командную строку:
curl https://example.com/wp-sitemap.xml | head
curl https://example.com/sitemap_index.xml | headЕсли карта отключена правильно, вы не увидите XML-структуру там, где её быть не должно. Если карта осталась, но содержит лишние URL, значит проблема не в генераторе, а в настройках типов записей или таксономий.
Частые ошибки и как их исправить
Отключили не тот источник
Самая частая ошибка — выключить встроенную sitemap WordPress, когда реальная карта генерируется SEO-плагином, или наоборот. В результате поисковик продолжает видеть старый адрес, а новый не отправлен.
Что делать: сначала определите фактический URL карты и только потом меняйте настройки.
Осталась ссылка в robots.txt
После миграции или смены плагина в robots.txt часто остаётся старая строка Sitemap:. Поисковики могут продолжать ходить по неактуальному адресу. Исправьте robots.txt и проверьте его отдачу без кэша.
Кэш показывает старую версию
Если карта отключена, но в браузере она всё ещё открывается, виноват кэш. Это бывает на уровне плагина, nginx, Cloudflare или другого CDN. Очистите все слои кэширования и повторите проверку через curl с заголовками ответа.
Сайт отдаёт 200 на пустую или битую карту
Иногда карта формально открывается, но внутри пусто или есть битые ссылки. Для поисковика это хуже, чем честный 404 на отключённый ресурс. В таком случае лучше либо восстановить корректную генерацию, либо убрать адрес из индексации и заменить его рабочей картой.
Безопасность и производительность: что учесть
Отключение sitemap само по себе не ускоряет сайт заметно, но уменьшает количество лишней логики, если у вас был конфликт нескольких генераторов. На больших проектах это полезно ещё и потому, что карта перестаёт собираться дважды.
Если правите кодом, не вносите изменения прямо в родительскую тему. Лучше использовать дочернюю тему или мини-плагин. Тогда обновление темы не затрёт фильтр wp_sitemaps_enabled или исключения по типам записей.
Если у вас уже стоит плагин для технической чистки сайта, например Clearfy Pro, проверьте, не решает ли он эту задачу через интерфейс. Это удобнее, чем держать отдельный код, если на проекте много подобных правок.
Короткий чек-лист перед публикацией изменений
- определён реальный источник sitemap;
- отключён только один лишний генератор;
- проверен ответ
200или404на нужном URL; - обновлён
robots.txt, если там была старая ссылка; - очищен кэш на сайте и на CDN;
- в Search Console отправлена актуальная карта.
Если после этого sitemap ведёт себя предсказуемо, значит задача решена правильно: у поисковика остался один понятный источник, а у вас — контроль над тем, что именно попадает в индекс.