Встроенная XML-карта сайта в WordPress полезна не всегда. На небольшом сайте она обычно не мешает, но на проектах с кастомной логикой, отдельными SEO-решениями или генерацией sitemap через плагин часто появляются дубли, лишние URL и путаница в индексации. В такой ситуации задача не в том, чтобы «убрать sitemap вообще», а в том, чтобы отключить встроенную карту WordPress и оставить один понятный источник для поисковых систем.
Ниже — практический сценарий: как понять, что именно конфликтует, как отключить стандартный sitemap, как проверить результат и где чаще всего ошибаются.
Когда встроенная XML-карта сайта мешает
С версии WordPress 5.5 у ядра появилась собственная XML Sitemap. Для многих сайтов это удобно, но не для всех. Проблемы обычно возникают, если:
- у вас уже есть sitemap от SEO-плагина и в индексе появляются два набора карт;
- часть контента закрыта от индексации, но всё равно попадает в sitemap ядра;
- нужно исключить нестандартные типы записей, таксономии или служебные URL;
- вы отдаёте sitemap через отдельный плагин, сервис или кастомный код и хотите избежать конфликтов;
- в логах или в Search Console видно, что поисковик ходит в несколько разных sitemap одновременно.
Как понять, что проблема именно в sitemap WordPress
Проверьте несколько точек вручную. Это быстрее, чем гадать по симптомам:
- откройте
/wp-sitemap.xmlна сайте; - посмотрите, есть ли там ссылки на посты, страницы, авторов, категории и другие типы контента;
- сравните этот список с sitemap, который отдаёт ваш SEO-плагин;
- проверьте, не индексируется ли сам
wp-sitemap.xmlотдельно в поиске; - посмотрите, нет ли в Search Console сообщений о дубликатах карт сайта или URL, которые не должны попадать в индекс.
Если у вас уже настроен Yoast SEO, Rank Math, The SEO Framework или другой плагин, который генерирует собственную карту сайта, встроенный sitemap ядра часто становится лишним слоем.
Как отключить XML Sitemap в WordPress
Есть два нормальных пути: через код или через плагин, если он умеет отключать именно ядровую карту сайта. Для точечной задачи надёжнее код: он не зависит от интерфейса стороннего плагина и не добавляет лишнюю логику в админку.
Вариант 1: отключить через functions.php или mu-plugin
Самый аккуратный способ — добавить фильтр wp_sitemaps_enabled. Он есть в ядре WordPress и отключает встроенную генерацию sitemap.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Куда вставлять:
- в
functions.phpдочерней темы, если решение нужно только для конкретной темы; - лучше — в
mu-plugins, если это системная настройка сайта и она не должна зависеть от темы.
Пример для mu-plugin:
<?php
/**
* Plugin Name: Disable Core Sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );Если вы используете дочернюю тему, не забывайте, что при смене темы этот код может потеряться. Для постоянной технической настройки mu-plugin надёжнее.
Вариант 2: отключить через SEO-плагин, если он это поддерживает
Некоторые SEO-плагины умеют сами отключать встроенную карту сайта WordPress, когда включена их собственная. Это удобно, но важно проверить результат руками: не все плагины делают это одинаково, а интерфейс и поведение зависят от версии.
Если в настройках есть переключатель, который явно говорит об отключении стандартного sitemap ядра, используйте его только после проверки URL /wp-sitemap.xml. Не полагайтесь на название опции — смотрите на фактический ответ сервера.
Что делать, если нужен не полный отказ, а только часть sitemap
Иногда встроенную карту сайта не нужно отключать целиком. Например, вы хотите убрать из неё авторов или отдельный тип записей, но оставить остальное. В этом случае можно точечно фильтровать данные, которые WordPress отдаёт в sitemap.
Для этого в ядре есть фильтры, связанные с sitemap providers. Но здесь важно не уходить в сложную кастомизацию без необходимости: если у вас уже есть SEO-плагин, проще управлять исключениями в его настройках. Кастомный код имеет смысл, когда логика действительно нестандартная и должна жить в проекте, а не в интерфейсе.
Когда лучше не трогать ядро, а перенести задачу в SEO-плагин
| Подход | Когда подходит | Минус |
|---|---|---|
Код через wp_sitemaps_enabled | Нужно полностью отключить встроенный sitemap | Требует доступа к коду |
| Настройка в SEO-плагине | Плагин уже управляет sitemap и умеет отключать ядро | Зависит от конкретного плагина и версии |
| Кастомные фильтры для providers | Нужно исключить только часть типов контента | Сложнее поддерживать |
Пошаговая проверка после внедрения
После отключения встроенной карты сайта проверьте не только главную страницу sitemap, но и поведение сайта в целом. Это короткий чек-лист, который экономит время на отладке:
- откройте
https://ваш-домен/wp-sitemap.xml— он должен вернуть 404, редирект или пустую страницу в зависимости от вашей конфигурации; - проверьте, что sitemap от SEO-плагина доступен по своему адресу, например
/sitemap_index.xml; - убедитесь, что в sitemap нет лишних URL, которые вы не планировали отдавать;
- посмотрите исходный код robots.txt, если он ссылается на карту сайта;
- в Search Console отправьте только ту sitemap, которую вы действительно хотите использовать.
Если /wp-sitemap.xml продолжает открываться, значит фильтр не сработал или код подключён не там, где нужно. Если вместо отключения вы видите ошибку 500, проверьте синтаксис файла и место, куда вставлен код.
Как быстро проверить через браузер и сервер
Минимальная проверка выглядит так:
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/sitemap_index.xmlВ первом случае вы должны увидеть, что встроенная карта WordPress больше не отдаётся как рабочий sitemap. Во втором — что ваша основная карта сайта открывается нормально.
Частые ошибки и как их исправить
На практике проблемы повторяются одни и те же.
- Отключили sitemap ядра, но не убрали старую ссылку из robots.txt. Поисковик всё ещё может ходить по старому адресу. Исправление: обновите robots.txt или настройку SEO-плагина, которая добавляет ссылку на sitemap.
- Скрыли карту сайта, но оставили дубли в другом плагине. Если SEO-плагин и ядро одновременно генерировали sitemap, отключение только одного источника не решает проблему полностью. Исправление: проверьте, какой именно sitemap должен остаться единственным.
- Вставили код в активную тему, а потом сменили её. Настройка исчезает вместе с темой. Исправление: перенесите код в mu-plugin.
- Ожидали, что sitemap исчезнет из индекса сразу. Поисковики не обновляют индекс мгновенно. Исправление: отправьте актуальную sitemap и дождитесь переобхода.
- Отключили sitemap, но не проверили, не сломалась ли генерация в SEO-плагине. Исправление: убедитесь, что основной sitemap открывается и содержит нужные URL.
Безопасность и производительность
Отключение встроенной XML Sitemap само по себе не ускоряет сайт заметно, но убирает лишнюю точку генерации и уменьшает риск конфликтов. Это особенно полезно, если у вас уже есть отдельный SEO-слой и вы не хотите, чтобы ядро WordPress параллельно строило ещё одну карту сайта.
Если вы ведёте проект с большим количеством технических правок, держите такие изменения в одном месте: mu-plugin, репозиторий темы или отдельный служебный плагин. Так проще откатить правку, если SEO-логика меняется.
Для сайтов, где кроме sitemap есть ещё дубли, мусорные архивы и лишние служебные страницы, удобно смотреть на комплексные решения вроде Clearfy Pro: у него есть инструменты для технической чистки и управления SEO-обвязкой. Но даже в этом случае проверка вручную обязательна — никакой плагин не заменяет контроль фактических URL.
Что должно получиться в итоге
После настройки у вас должен остаться один понятный источник XML-карты сайта. Старый /wp-sitemap.xml больше не должен участвовать в индексации, а поисковик должен получать только актуальную карту, которую вы реально поддерживаете. Если это так, задача решена правильно: без лишних дублей, без конфликтов и без скрытых побочных эффектов.