Встроенные XML-sitemaps в WordPress удобны ровно до того момента, пока на сайте не появляется SEO-плагин, кастомные типы записей, лишние архивы или отдельная логика индексации. Тогда в индексе и в Google Search Console начинают жить сразу две карты сайта: одна от ядра, другая от плагина. В лучшем случае это просто шум. В худшем — дубли, лишние URL в обход вашей SEO-логики и путаница при диагностике.
Если у вас уже есть SEO-плагин, который умеет управлять картой сайта, обычно разумнее оставить один источник правды. Ниже — как понять, что именно мешает, как отключить встроенные XML-sitemaps в WordPress и как проверить, что после этого сайт не потерял нужные URL.
Когда встроенная карта сайта становится проблемой
Сама по себе функция wp-sitemaps не вредная. Проблема начинается, когда она конфликтует с настройками плагина или с вашей структурой сайта. Типичные сценарии:
- SEO-плагин уже генерирует собственный sitemap, а ядро WordPress продолжает отдавать
/wp-sitemap.xml; - в карту попадают архивы, таксономии или типы записей, которые вы не хотите индексировать;
- в Search Console появляются несколько карт сайта с пересекающимися URL;
- после миграции или обновления часть страниц осталась в старой карте, а часть — в новой;
- на сайте есть кастомные типы записей, и вы хотите управлять их индексацией из одного места, а не через ядро и плагин одновременно.
Диагностика проблемы
Проверка занимает пару минут. Откройте в браузере /wp-sitemap.xml. Если файл существует и отдает XML, значит встроенные sitemap в ядре активны. Затем посмотрите, есть ли у вашего SEO-плагина собственный sitemap-индекс, например /sitemap_index.xml или аналогичный адрес.
Дальше проверьте, не дублируются ли URL в Search Console. Если в отчете по картам сайта видны несколько источников, а в них пересекаются одни и те же страницы, это уже повод оставить только один генератор.
Полезно также посмотреть заголовки ответа:
curl -I https://example.com/wp-sitemap.xmlЕсли ответ 200 OK, карта доступна. Если вы уже отключили ее, но адрес все еще отвечает, значит отключение не сработало или его переопределяет код темы/плагина.
Как отключить XML-sitemaps в WordPress
В ядре WordPress это можно сделать через фильтр wp_sitemaps_enabled. Это самый чистый вариант, если вы хотите оставить управление картой сайта SEO-плагину или собственному коду.
Вариант 1: отключить через functions.php или mu-plugin
Если у вас есть дочерняя тема или отдельный must-use плагин, добавьте такой код:
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );После этого ядро перестанет регистрировать встроенные sitemap, а адрес /wp-sitemap.xml должен начать отдавать 404 или редирект, если его перехватывает другой слой.
Если не хотите привязываться к теме, лучше вынести это в mu-plugin. Тогда настройка не сломается после смены шаблона.
Вариант 2: отключить только часть карт сайта
Иногда не нужно выключать всё целиком. Например, вы хотите оставить карту записей, но убрать пользователей или таксономии. Для этого есть фильтры на уровне провайдеров, но на практике проще управлять этим через SEO-плагин. Если же нужен именно код, ориентируйтесь на фильтры ядра wp_sitemaps_post_types, wp_sitemaps_taxonomies и wp_sitemaps_users.
Пример, где из встроенной карты убираются пользователи и один тип записей:
<?php
add_filter( 'wp_sitemaps_users_enabled', '__return_false' );
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['product'] );
return $post_types;
} );Но если у вас уже есть SEO-плагин, который строит sitemap сам, не стоит смешивать два механизма без необходимости. Это усложняет поддержку и диагностику.
Что выбрать: код, плагин или оставить как есть
Выбор зависит от того, кто у вас управляет индексацией. Если SEO-плагин уже используется как основной инструмент, логично отдать ему и sitemap. Если сайт небольшой и без плагина, встроенная карта WordPress может быть достаточной. Если же у вас кастомная логика, лучше отключить ядро и контролировать карту через код или SEO-плагин.
| Подход | Когда подходит | Минус |
|---|---|---|
| Оставить встроенный sitemap | Простой сайт без SEO-плагина | Меньше контроля над составом URL |
| Отключить через код | Есть SEO-плагин или своя логика индексации | Нужно следить за обновлениями и местом хранения кода |
| Управлять через SEO-плагин | Нужна единая панель настроек | Зависимость от возможностей конкретного плагина |
Пошаговое решение без лишнего риска
- Проверьте, какой sitemap сейчас отдает сайт:
/wp-sitemap.xmlи адрес карты от SEO-плагина. - Сравните список URL в обеих картах. Если они пересекаются, оставьте один источник.
- Добавьте
add_filter( 'wp_sitemaps_enabled', '__return_false' );вmu-pluginили дочернюю тему. - Очистите кэш страницы, если он есть: серверный, плагина кэша, CDN.
- Проверьте, что
/wp-sitemap.xmlбольше не отдает XML. - Убедитесь, что SEO-плагин продолжает отдавать свою карту сайта и в ней есть нужные разделы.
Как проверить результат после внедрения
Проверка должна быть не только визуальной. Смотрите на три вещи: ответ сервера, содержимое карты и данные в Search Console.
- Откройте
/wp-sitemap.xmlв браузере или черезcurl -Iи убедитесь, что ядро больше не отдает XML. - Откройте sitemap от SEO-плагина и проверьте, что он доступен без ошибок.
- В Search Console посмотрите, не осталось ли старых карт сайта в статусе «не удалось получить» или «обнаружено, но не проиндексировано».
- Проверьте robots.txt, если вы вручную добавляли туда ссылки на sitemap. Там должен остаться только актуальный адрес.
Если у вас включен кэш, иногда браузер показывает старую версию XML. В таком случае проверяйте ответ через curl или в режиме инкогнито после очистки кэша.
Частые ошибки и как их исправить
Код добавили в тему, а после обновления он исчез
Это классическая ошибка. Если отключение sitemap критично для SEO, не храните его в родительской теме. Используйте дочернюю тему или mu-plugin.
Отключили карту, но /wp-sitemap.xml все еще открывается
Значит, фильтр не сработал или его переопределяет другой плагин. Проверьте, нет ли в SEO-плагине собственного модуля sitemap, который не связан с ядром WordPress. Также убедитесь, что код выполняется достаточно рано и без синтаксических ошибок.
После отключения пропали нужные URL из индексации
Это уже не проблема отключения как такового, а проблема замены. Перед отключением убедитесь, что SEO-плагин действительно генерирует карту с нужными типами записей, таксономиями и архивами. Если карта от плагина пустая, сначала настройте ее, потом выключайте ядро.
В robots.txt осталась старая ссылка на sitemap
Если вы вручную прописывали адрес карты сайта, обновите его. Иначе поисковик будет продолжать ходить по старому URL, даже если он больше не нужен.
Практические замечания по безопасности и производительности
Отключение встроенных sitemap само по себе не ускоряет сайт заметно, но оно убирает лишнюю точку поддержки и уменьшает риск путаницы в индексации. Это особенно полезно на сайтах, где много кастомных типов записей и архивов.
Если вы работаете с несколькими SEO-инструментами, не включайте одновременно несколько генераторов карт сайта «на всякий случай». Чем больше источников, тем сложнее понять, какой из них реально влияет на индексацию.
Если нужен более широкий набор инструментов для чистки дублей и технической оптимизации, имеет смысл смотреть в сторону плагинов, где sitemap — лишь часть общей логики. Например, у Clearfy Pro есть инструменты для удаления дублей и технической чистки сайта: https://wpshop.ru/plugins/clearfy.
Главный принцип здесь простой: один сайт — один источник правды для sitemap. Все остальное только усложняет поддержку и мешает быстро понять, где именно сломалась индексация.