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