Ситуация типовая: на сайте уже есть рабочая XML-карта, но после установки SEO-плагина, темы или отдельного модуля появляется вторая, третья или даже несколько карт. В итоге в /sitemap.xml и похожих адресах начинается путаница: поисковик видит дубли, а вы — лишние URL в отчётах и непонятные редиректы.
Ниже разберём, как понять, кто именно генерирует sitemap, как отключить только лишний источник и как проверить, что после правки сайт не потерял нужные URL.
Когда проблема действительно в XML sitemap
Не каждая ошибка индексации связана именно с картой сайта. Но если в Search Console или в логах вы видите одно из следующих признаков, копать стоит сюда:
- в индексе есть URL из старой карты, хотя контент уже удалён;
- в
/robots.txtуказан один sitemap, а реально открывается другой; - после установки нового SEO-плагина появились дополнительные карты вроде
/post-sitemap.xmlили/page-sitemap.xml; - в теме есть собственный генератор sitemap, который дублирует карту плагина;
- в браузере открываются несколько XML-файлов, и непонятно, какой из них основной.
Как быстро определить источник
Сначала проверьте, кто отдаёт карту. Откройте адреса, которые обычно используются в WordPress:
/sitemap.xml/wp-sitemap.xml/sitemap_index.xml
Дальше посмотрите на структуру ответа. Если это индекс с набором ссылок на другие XML-файлы, почти наверняка карту создаёт SEO-плагин. Если же открывается один файл без вложенных ссылок, это может быть генератор темы или отдельного плагина.
Полезно также посмотреть исходный код страницы карты: в нём часто видно название плагина, путь к файлу или характерный шаблон URL.
Что именно отключать: плагин, тему или ядро WordPress
В WordPress XML sitemap может приходить из трёх мест:
- ядро WordPress — базовая карта
/wp-sitemap.xml; - SEO-плагин — часто создаёт собственный индекс карт;
- тема или кастомный код — встречается реже, но именно здесь чаще всего появляются дубли.
Отключать всё подряд не нужно. Важно оставить один источник, который вы реально используете. Если у вас уже настроен SEO-плагин с картой сайта, обычно логично отключить встроенную карту ядра WordPress и убрать лишние генераторы из темы.
| Вариант | Что даёт | Минус |
|---|---|---|
| Отключить через настройки плагина | Самый безопасный путь, если опция есть | Не у всех плагинов есть явная настройка |
| Отключить через код | Точный контроль над источником sitemap | Нужен доступ к functions.php или mu-plugin |
| Удалить модуль темы | Убирает дубли на уровне шаблона | Можно задеть другие функции темы |
Пошагово: как отключить лишнюю XML sitemap
Шаг 1. Найдите источник генерации
Если карта создаётся плагином, ищите в его настройках разделы вроде Sitemaps, XML sitemap, Indexing или Search appearance. У большинства SEO-плагинов карта отключается именно там.
Если карта приходит из темы, проверьте:
functions.phpдочерней темы;- mu-плагины в
wp-content/mu-plugins/; - кастомные сниппеты в Code Snippets или аналогичном плагине;
- файлы с названием вроде
sitemap,seo,index.
Шаг 2. Отключите встроенную карту WordPress, если она лишняя
Если вы используете собственную карту от SEO-плагина и не хотите, чтобы ядро WordPress добавляло ещё одну, можно отключить встроенную генерацию через фильтр wp_sitemaps_enabled.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Этот код лучше добавлять в дочернюю тему или в отдельный mu-plugin, а не в основную тему, которую вы можете обновить.
Шаг 3. Уберите sitemap, который создаёт тема или кастомный код
Если в теме есть собственная функция генерации sitemap, обычно она подключается через add_action или через обработчик rewrite rules. В таком случае нужно не просто скрыть ссылку, а отключить саму регистрацию маршрута или вывод файла.
Пример: если тема добавляет собственный endpoint, его можно убрать на уровне кода, если вы знаете точное имя хука или функции. Универсального решения здесь нет, поэтому сначала ищите конкретный вызов в коде темы.
<?php
remove_action( 'init', 'theme_register_sitemap' );Это сработает только если вы действительно нашли такую функцию. Если имя другое, подставлять его наугад нельзя: вы просто ничего не отключите.
Шаг 4. Проверьте robots.txt и ссылки на карту
После отключения лишнего источника откройте /robots.txt. Там должна остаться только одна строка с sitemap, если вы действительно используете один основной индекс.
Если в robots.txt прописан старый адрес, обновите его вручную или через настройки SEO-плагина. Иначе поисковик продолжит ходить по устаревшему пути, даже если сам файл уже отключён.
Как понять, что решение сработало
Проверка нужна не только в браузере. Важно убедиться, что:
- старый sitemap отдаёт 404, 410 или корректный редирект на новый адрес — в зависимости от вашей схемы;
- в robots.txt осталась одна актуальная ссылка;
- в Search Console отправляется только один индекс карт;
- внутри sitemap нет мусорных URL, дублей и страниц, которые вы не хотите индексировать;
- новые записи и страницы продолжают попадать в карту автоматически.
Минимальный ручной тест можно сделать так:
curl -I https://example.com/sitemap.xml
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/robots.txtСмотрите на код ответа и на заголовок Location, если есть редирект. Если один из старых адресов всё ещё отдаёт 200 и содержит XML, значит источник не отключён до конца.
Частые ошибки и как их исправить
Отключили не тот sitemap
Часто путают карту ядра WordPress и карту SEO-плагина. В итоге выключают встроенный /wp-sitemap.xml, а дубли остаются, потому что основной источник был в плагине. Сначала определите, какой адрес реально используется поисковиком и какой файл указан в robots.txt.
Удалили URL из robots.txt, но не отключили генератор
Это не решает проблему. Карта продолжает существовать и может быть найдена по прямому адресу. Robots.txt — это подсказка, а не блокировка.
Сломали sitemap после обновления темы
Если правка была внесена прямо в файлы родительской темы, обновление всё перезапишет. Для таких изменений используйте дочернюю тему или mu-plugin.
Отключили карту, но забыли обновить Search Console
Если старый sitemap был отправлен в Search Console, его нужно удалить из списка и добавить новый, если адрес изменился. Иначе отчёты будут показывать старую структуру ещё долго.
Кодовый вариант для точечного отключения
Если вам нужно отключить только встроенную карту WordPress, но оставить карту SEO-плагина, достаточно одного фильтра. Это самый чистый вариант, когда вы точно знаете, что плагин уже берёт на себя генерацию XML.
<?php
/**
* Отключает встроенные XML sitemaps WordPress.
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );Если же нужно убрать конкретный маршрут, который добавляет ваш код, сначала найдите регистрацию этого маршрута и удалите именно её. Не пытайтесь глушить всё подряд через exit или жёсткий редирект: это создаёт лишние ошибки и мешает диагностике.
Безопасность и производительность
XML sitemap сама по себе не тяжёлая, но проблемы начинаются, когда на сайте несколько генераторов, каждый из которых строит карту на лету. Это лишняя нагрузка на PHP и база данных, особенно если сайт большой.
Практически это означает следующее:
- оставляйте только один источник sitemap;
- не генерируйте XML через сложные запросы на каждом хите без кэша;
- не храните логику sitemap в случайном сниппете без контроля версий;
- после изменений проверяйте не только главную карту, но и вложенные URL.
Если у вас уже есть набор технических проблем — дубли, мусорные архивы, лишние страницы в индексе, конфликтующие настройки SEO — иногда проще собрать это в один набор правил и чистить сайт централизованно. В таких случаях полезны инструменты уровня Clearfy Pro, но только если вы понимаете, что именно отключаете и зачем: автоматическая чистка без диагностики часто делает хуже.
Что делать, если sitemap нужен, но только для части сайта
Иногда карту не нужно отключать полностью. Например, вы хотите исключить медиафайлы, служебные таксономии или отдельные типы записей. Тогда задача уже не в выключении sitemap, а в настройке её состава.
В этом случае проверьте, есть ли у вашего SEO-плагина отдельные переключатели для:
- типов записей;
- таксономий;
- архивов автора;
- медиа-вложений;
- служебных страниц.
Если таких настроек нет, лучше не пытаться переписывать генератор целиком без необходимости. Проще отключить лишний источник и оставить один управляемый sitemap, чем поддерживать самописный XML-код в теме.