wptavern.ru wordpress wptavern.ru

Как отключить XML sitemap в WordPress и заменить его на свой вариант

В 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.xml
  • https://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-плагинСамый частый продакшен-сценарийОдин источник карты сайта, меньше дублейТребует проверки после обновлений плагина

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

  1. Проверьте, какой sitemap сейчас открыт по /wp-sitemap.xml и /sitemap_index.xml.
  2. Убедитесь, что SEO-плагин уже генерирует рабочую карту сайта.
  3. Добавьте add_filter( 'wp_sitemaps_enabled', '__return_false' ); в mu-plugin или дочернюю тему.
  4. Очистите кэш сайта, серверный кэш и CDN, если они есть.
  5. Проверьте, что /wp-sitemap.xml больше не отдает XML.
  6. Отправьте в 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, который вы реально контролируете. Все остальное — источник дублей, лишних проверок и путаницы в отчетах.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙