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