XML sitemap в WordPress часто включают по умолчанию и потом забывают. Проблема начинается, когда карта сайта дублируется плагином SEO, содержит лишние типы записей, указывает на уже закрытые от индексации URL или просто создаёт шум в отчётах Search Console. В таких случаях правильнее не «лечить» карту сайта, а понять, кто её генерирует, и отключить лишнее без потери контроля над индексацией.
Ниже — практический сценарий: как диагностировать источник sitemap, отключить встроенную карту WordPress или карту плагина, проверить результат и не получить пустой индексный файл вместо нормальной структуры сайта.
Когда XML sitemap действительно мешает
Сам по себе sitemap не вреден. Он становится проблемой, когда:
- WordPress отдаёт встроенную карту, а SEO-плагин — свою, и поисковик видит несколько источников;
- в sitemap попадают архивы, теги, авторы или другие страницы, которые вы не хотите индексировать;
- карта содержит URL с редиректами, 404 или canonical на другой адрес;
- на сайте есть staging-копия, и её sitemap случайно открыт для индексации;
- после миграции остались старые карты сайта, которые продолжают отдавать 200 OK.
Как понять, что проблема именно в sitemap
Сначала проверьте, какие карты сайта реально доступны. В WordPress 5.5+ встроенная карта обычно открывается по адресу /wp-sitemap.xml. SEO-плагины часто добавляют свой индекс, например /sitemap_index.xml. Если открываются оба варианта, это уже повод разобраться, какой из них должен остаться.
Дальше посмотрите:
- какой sitemap указан в Google Search Console;
- нет ли в карте URL, которые вы закрывали через
noindexили robots.txt; - не дублируются ли записи и таксономии между встроенной и плагинной картой;
- не меняется ли содержимое карты после очистки кеша.
Сначала диагностика: кто генерирует карту сайта
В WordPress встроенный XML sitemap можно отключить фильтрами, но делать это стоит только если вы точно знаете, что SEO-плагин уже генерирует свою карту. Иначе сайт останется без актуального sitemap вообще.
Проверка простая: откройте исходный код главной страницы и найдите ссылку на sitemap, либо посмотрите настройки SEO-плагина. У Yoast, Rank Math и похожих решений карта обычно включается отдельно. Если плагин уже отдаёт индекс, встроенную карту WordPress лучше отключить.
Быстрая проверка через браузер и curl
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap_index.xmlЕсли оба адреса отвечают 200 OK, это не всегда ошибка, но чаще всего лишняя конкуренция двух карт. Если один из адресов отдаёт редирект или 404, сначала разберитесь, кто его создаёт и не сломан ли кеш.
Как отключить встроенный XML sitemap WordPress
Если вы используете SEO-плагин с собственной картой сайта, встроенный sitemap WordPress можно отключить через фильтр wp_sitemaps_enabled. Это самый чистый способ: он не ломает ядро и не требует правки файлов плагина.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Код можно добавить в functions.php дочерней темы или в собственный мини-плагин. Для боевого сайта мини-плагин надёжнее: он не исчезнет после смены темы.
Когда этого достаточно
Этот вариант подходит, если:
- у вас уже включён sitemap в SEO-плагине;
- вы не хотите, чтобы WordPress создавал второй источник;
- вам не нужны встроенные карты для медиа, авторов и типов записей ядра.
После отключения проверьте, что /wp-sitemap.xml больше не отдаёт активную карту. В идеале он должен возвращать 404 или редирект на актуальный sitemap, если вы так настроили сервер.
Если sitemap генерирует SEO-плагин
Здесь логика другая: не отключайте карту целиком, а уберите из неё лишние разделы. Это особенно важно, если в индекс попадают теги, авторы, архивы дат или служебные таксономии.
У большинства SEO-плагинов есть настройки индексации и sitemap в интерфейсе. Но если нужен точечный контроль, удобнее использовать фильтры плагина. Пример для WordPress-логики: отключить отдельный тип записей из sitemap через фильтр, если плагин его поддерживает. У разных SEO-плагинов названия фильтров отличаются, поэтому здесь важно смотреть документацию конкретного решения, а не копировать чужой код вслепую.
Если вы не уверены, лучше идти через настройки плагина, а не через хук. Это проще сопровождать и легче откатить.
Сравнение подходов
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Отключить встроенный sitemap WordPress | Есть SEO-плагин со своей картой | Убирает дубли на уровне ядра | Нужно убедиться, что альтернатива уже работает |
| Настроить карту в SEO-плагине | Нужно оставить sitemap, но почистить его | Гибко управляет типами URL | Зависит от возможностей плагина |
| Оставить всё как есть | Сайт маленький, карта не мешает | Ничего не ломаете | Риск дублей и лишнего шума в индексации |
Пошаговое решение без лишнего риска
- Проверьте, какие sitemap доступны по URL
/wp-sitemap.xmlи/sitemap_index.xml. - Убедитесь, что SEO-плагин уже генерирует свою карту и она открывается без ошибок.
- Отключите встроенный sitemap через
wp_sitemaps_enabled. - Очистите кеш сайта, CDN и серверный кеш, если он есть.
- Проверьте ответ сервера на старый URL sitemap.
- Обновите карту в Google Search Console, если менялся основной источник.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Смотрите на HTTP-ответ и содержимое страницы.
curl -I https://example.com/wp-sitemap.xml
curl -s https://example.com/wp-sitemap.xml | headПосле отключения встроенной карты:
/wp-sitemap.xmlне должен отдавать активный индекс WordPress;- основной sitemap SEO-плагина должен открываться стабильно;
- в Search Console не должно появляться новых ошибок по недоступным URL из карты;
- в карте не должно быть страниц, которые вы уже закрыли от индексации.
Если используете кеширующий плагин, проверьте sitemap в режиме инкогнито и после принудительной очистки кеша. Иногда старая версия карты остаётся доступной именно из кеша, и кажется, что отключение не сработало.
Частые ошибки и как их исправить
Отключили встроенный sitemap, но забыли включить альтернативу
В результате сайт остаётся без актуальной карты. Исправление простое: сначала включите sitemap в SEO-плагине, потом отключайте встроенный.
Правили файл плагина напрямую
После обновления изменения исчезнут. Используйте фильтр, дочернюю тему или мини-плагин.
Не очистили кеш
Старый sitemap продолжает отдаваться из кеша, и вы видите неактуальный результат. Очистите page cache, object cache и CDN, если он подключён.
Закрыли sitemap robots.txt
Это частая путаница. Robots.txt не отключает генерацию карты, а только подсказывает роботам, что не стоит её сканировать. Если карта уже отдаёт мусор, сначала исправьте сам sitemap.
Оставили в карте URL с noindex
Такой sitemap создаёт противоречие: вы одновременно просите поисковик не индексировать страницу и предлагаете её в карте. Лучше убрать эти URL из sitemap на уровне настроек или фильтра.
Практические советы по безопасности и производительности
Если сайт большой, sitemap может быть тяжёлым. Это не повод отключать его полностью, но повод следить за генерацией. Не делайте карту через медленные запросы к базе без кеширования. Если карта строится плагином, убедитесь, что он не создаёт лишнюю нагрузку на каждый запрос.
Для безопасности важно не светить staging-сайт и служебные разделы. Если тестовая копия доступна публично, закройте её на уровне сервера и проверьте, не отдаются ли там sitemap и robots.txt с боевого домена.
Если вам нужен более широкий контроль над технической чисткой сайта, в экосистеме WPShop есть Clearfy Pro, который помогает убирать лишние технические элементы и настраивать SEO-часть аккуратнее, без ручного правления ядра.
Что делать, если sitemap нужен, но в нём слишком много лишнего
Тогда не отключайте карту целиком. Сначала уберите из неё архивы, теги, авторов, служебные таксономии и всё, что не должно участвовать в поиске. Это безопаснее для сайта, чем резать карту на уровне сервера или отключать её полностью.
Хорошее правило: sitemap должен отражать только те URL, которые вы реально хотите видеть в индексе. Если страница не должна индексироваться, она не должна попадать туда «по привычке».
<?php
// Пример: отключение встроенного sitemap WordPress на уровне мини-плагина.
/*
Plugin Name: Disable WP Sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );После внедрения ещё раз проверьте ответ /wp-sitemap.xml, карту в SEO-плагине и отчёты Search Console. Если всё совпадает с вашей логикой индексации, решение можно считать завершённым.