Ситуация типовая: после обновления WordPress, установки SEO-плагина или миграции на новый сайт в индексе появляется сразу несколько карт sitemap. В результате поисковик видит дубли, а в панели вебмастера начинают сыпаться лишние URL. Иногда проблема обратная: sitemap нужен только от SEO-плагина, а встроенная карта WordPress только мешает. В этой статье разберем, как отключить XML sitemap в WordPress точечно и без побочных эффектов.
Когда sitemap действительно нужно отключать
Отключение имеет смысл не всегда. Если у вас один источник карты сайта и он корректно обновляется, трогать ничего не нужно. Но есть несколько сценариев, где отключение встроенного sitemap WordPress оправдано:
- SEO-плагин уже генерирует собственный sitemap, и в выдаче видны дубли;
- на сайте есть технические страницы, которые не должны попадать в карту;
- после переноса сайта остались старые sitemap-адреса, которые отдают 200 OK;
- нужно исключить sitemap из-за нестандартной архитектуры, например, когда карту формирует отдельный сервис или плагин.
Что именно отключаем
Начиная с WordPress 5.5, ядро умеет отдавать XML sitemap по адресу /wp-sitemap.xml. Это не то же самое, что sitemap от Yoast, Rank Math или другого SEO-плагина. Если отключать карту сайта, важно понимать, какой именно источник вы убираете. Иначе можно случайно оставить сайт вообще без sitemap.
Диагностика: откуда берется карта сайта
Перед правками проверьте, кто именно генерирует sitemap. Это можно сделать без доступа к серверу и без догадок.
- Откройте
/wp-sitemap.xmlи посмотрите, открывается ли стандартная карта WordPress. - Проверьте адреса SEO-плагина: у Yoast это обычно
/sitemap_index.xml, у Rank Math — тоже отдельный индекс. - Откройте исходный код главной страницы и найдите ссылки на sitemap.
- Если есть доступ к Search Console, посмотрите, какой URL карты сайта туда добавлен.
Если на сайте одновременно доступны /wp-sitemap.xml и /sitemap_index.xml, это не всегда ошибка. Ошибка начинается, когда обе карты содержат пересекающиеся URL или одна из них отдает пустые разделы, но продолжает индексироваться.
Как отключить встроенный XML sitemap WordPress
Самый надежный способ — через фильтр wp_sitemaps_enabled. Его можно добавить в дочернюю тему, в mu-plugin или в собственный мини-плагин. Это лучше, чем править ядро или надеяться на случайную настройку в админке.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );После этого WordPress перестанет отдавать встроенный sitemap по адресу /wp-sitemap.xml. Если у вас уже есть sitemap от SEO-плагина, он продолжит работать независимо.
Если нужен не полный запрет, а точечное отключение
Иногда нужно не выключать карту целиком, а убрать только часть сущностей, например архивы авторов или медиафайлы. Для этого есть отдельные фильтры. Пример ниже отключает медиа-страницы из sitemap WordPress:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );Такой подход полезен, если вы хотите оставить sitemap для записей и страниц, но убрать мусорные URL, которые не дают пользы для индексации.
Сравнение подходов: плагин, код, серверная настройка
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Фильтр в коде | Нужен точный контроль | Прозрачно, быстро, без лишних зависимостей | Нужно не забыть о теме или mu-plugin |
| SEO-плагин | Карта уже генерируется плагином | Удобно управлять исключениями | Легко получить дубли, если не отключить ядро |
| Серверные правила | Нужно закрыть старый URL | Работает даже при смене темы | Не решает проблему генерации внутри WordPress |
Пошаговое решение без дублей
- Определите, какой sitemap должен остаться основным.
- Если основной sitemap генерирует SEO-плагин, отключите встроенный
wp-sitemap.xml. - Проверьте, не добавлены ли оба адреса в Search Console.
- Убедитесь, что старый sitemap возвращает корректный код ответа: либо 404, либо редирект на новый адрес, если это уместно.
- Пересканируйте карту сайта в панели вебмастера.
Если вы переносите сайт на новый SEO-плагин, лучше сначала оставить оба sitemap на короткий переходный период, а потом убрать старый. Это снижает риск потерять часть сигналов из-за резкой смены структуры.
Проверка результата после внедрения
После отключения не ограничивайтесь открытием страницы в браузере. Проверьте несколько вещей:
/wp-sitemap.xmlдолжен перестать открываться или отдавать ожидаемый ответ;- основной sitemap должен открываться без ошибок XML;
- внутри карты не должно быть пустых разделов, если они вам не нужны;
- в Search Console не должно быть новых ошибок по карте сайта;
- в логах сервера не должно быть массовых запросов к старому адресу с 500 или 200 на пустую страницу.
Если используете CLI, можно быстро проверить код ответа:
curl -I https://example.com/wp-sitemap.xmlДля отключенного sitemap ожидаемый результат зависит от того, как именно вы его убрали: 404, 410 или редирект на актуальный адрес. Главное — не оставлять старую карту с валидным 200 OK, если она больше не нужна.
Частые ошибки и как их исправить
Отключили не тот sitemap
Самая частая ошибка — выключить встроенный sitemap WordPress, а потом случайно удалить и sitemap SEO-плагина. В итоге сайт остается без карты сайта вообще. Проверяйте адреса отдельно и не ориентируйтесь только на название файла.
Оставили дубли в Search Console
Если старый sitemap уже был добавлен в панель вебмастера, его нужно удалить или заменить. Иначе поисковик продолжит ходить по нему, даже если на сайте он больше не используется.
Скрыли sitemap через robots.txt
Это не отключение, а только запрет на обход. Сам XML-файл при этом может продолжать открываться по прямой ссылке. Если цель — убрать генерацию, используйте фильтр WordPress, а не только robots.txt.
Положились на кеш
После изменения кода старый sitemap может еще некоторое время отдаваться из кеша. Если используете page cache или CDN, очистите кеш на уровне плагина, сервера и CDN, иначе проверка даст ложный результат.
Безопасность и производительность
Сам по себе sitemap почти не нагружает сайт, но проблемы начинаются, когда его генерируют несколько источников сразу. Тогда лишние запросы идут в пустую, а поисковик получает противоречивые сигналы. Для производительности лучше держать один источник карты сайта и не плодить альтернативы без необходимости.
Если вы вносите код вручную, безопаснее всего вынести его в mu-plugin. Тогда отключение не сломается при смене темы. Пример минимального файла:
<?php
/**
* Plugin Name: Disable Core Sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );Такой вариант проще сопровождать, чем правку functions.php, особенно если на сайте несколько разработчиков или тема регулярно обновляется.
Когда лучше не писать код вручную
Если на сайте уже стоит SEO-плагин с управлением sitemap и вам нужно только убрать дубли, иногда проще решить задачу настройкой плагина. Например, в комплексных SEO-плагинах обычно можно отключить отдельные типы контента, архивы или таксономии без правки кода. Но если нужна точная и воспроизводимая настройка, фильтр WordPress надежнее.
Для сайтов, где важна чистка дублей и контроль технической индексации, иногда удобнее использовать специализированные инструменты вроде Clearfy Pro: он помогает убрать лишние элементы и сократить технический шум, но все равно не отменяет необходимость понимать, какой sitemap у вас основной.
Если после отключения карты сайта вы видите, что поисковик продолжает индексировать старые URL, проверьте не только sitemap, но и внутренние ссылки, канонические URL и настройки редиректов. Sitemap — это источник подсказок для поисковика, а не единственный фактор индексации.