XML Sitemap в WordPress часто включают «на всякий случай», а потом получают дубли карт, лишние URL в индексе или конфликт между ядром, SEO-плагином и кастомным кодом. Проблема обычно не в самой карте сайта, а в том, что она начинает отдавать не те ссылки, которые вы реально хотите показать поисковику.
Ниже разберём рабочий сценарий: как понять, что sitemap мешает, как отключить именно лишний источник, и как проверить, что после правки в индексацию попадают только нужные страницы.
Когда sitemap действительно нужно отключать
Отключать XML Sitemap имеет смысл не «по вкусу», а когда есть конкретный конфликт. Самые частые случаи:
- WordPress 5.5+ уже отдаёт
/wp-sitemap.xml, а SEO-плагин генерирует свой sitemap отдельно. - В sitemap попадают служебные URL: вложения, теги, архивы, пустые таксономии, страницы пагинации.
- В Search Console видны ошибки «Submitted URL seems to be a Soft 404» или «Duplicate, Google chose different canonical than user».
- На сайте есть кастомная генерация карты сайта, и она конфликтует с ядром WordPress.
Если у вас один источник sitemap и он корректно настроен, отключать его не нужно. Важно убрать именно лишнюю генерацию, а не «сломать всё сразу».
Диагностика проблемы: кто именно отдаёт sitemap
Сначала нужно понять, откуда приходит карта сайта. В WordPress это может быть ядро, SEO-плагин или кастомный код в теме/плагине. Проверка простая: откройте в браузере /wp-sitemap.xml и посмотрите, отдаётся ли XML-карта от ядра. Затем проверьте sitemap, который добавляет ваш SEO-плагин, например /sitemap_index.xml у Yoast или аналогичный адрес у Rank Math.
Если открываются сразу две разные карты, это уже повод оставить только одну. Если одна из них пустая, содержит мусор или дублирует другую, её лучше отключить на уровне источника, а не скрывать через robots.txt.
Что проверить перед изменениями
- Какие sitemap-адреса реально доступны в браузере.
- Есть ли в
robots.txtссылка на sitemap. - Не добавляет ли тему или плагин собственный endpoint через
rewrite rules. - Не включена ли генерация карт сайта в нескольких SEO-плагинах одновременно.
Как отключить XML Sitemap в ядре WordPress
Если вы используете SEO-плагин, который уже генерирует sitemap, встроенную карту WordPress обычно имеет смысл отключить. Для этого есть фильтр wp_sitemaps_enabled. Его можно добавить в мини-плагин или в functions.php дочерней темы, но для технической правки безопаснее использовать отдельный mu-plugin.
<?php
/**
* Plugin Name: Disable core XML sitemap
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );
После этого WordPress перестанет отдавать /wp-sitemap.xml. Это не влияет на обычные страницы сайта, но убирает встроенную карту ядра.
Если нужно отключить только часть sitemap
Иногда отключать всё не нужно. Например, можно оставить sitemap для записей и страниц, но убрать авторов, вложения или таксономии. Для этого удобнее работать через фильтры конкретных провайдеров, если вы пишете свой код. Но если задача простая и у вас уже есть SEO-плагин с гибкими настройками, лучше отключать лишние типы там, а не дублировать логику в теме.
Сравнение подходов: плагин, код или robots.txt
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует Yoast, Rank Math, All in One SEO и т. п. | Безопасно и прозрачно | Зависит от интерфейса плагина |
Фильтр wp_sitemaps_enabled | Нужно отключить именно ядро WordPress | Точно убирает встроенный sitemap | Требует правки кода |
robots.txt | Нужно только скрыть адрес от роботов | Быстро | Не отключает генерацию и не решает конфликт |
Если цель — убрать конфликт, robots.txt не является полноценным решением. Поисковик может всё равно найти URL, а сама карта продолжит генерироваться и нагружать сайт.
Пошаговое решение без потери нужной индексации
Рабочая схема обычно такая: сначала отключаете лишний источник sitemap, потом проверяете, что в карте остались только канонические URL, и только после этого отправляете обновлённую карту в Search Console.
- Определите, какой sitemap должен остаться: ядро WordPress или SEO-плагин.
- Отключите второй источник через настройки плагина или фильтр.
- Проверьте, что в sitemap нет служебных URL.
- Обновите ссылку на sitemap в
robots.txt, если она там указана вручную. - Переотправьте sitemap в Google Search Console и Яндекс Вебмастер.
Если вы используете свой код, лучше вынести его в mu-plugin, чтобы он не зависел от темы. Это особенно важно, если тема может смениться позже.
<?php
/**
* Plugin Name: Site SEO tweaks
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );
add_action( 'init', function () {
// Пример: если у вас есть свой sitemap endpoint, не забудьте проверить rewrite rules.
} );
Как проверить результат после внедрения
Проверка должна быть не формальной, а технической. Откройте в браузере оба адреса: /wp-sitemap.xml и sitemap вашего SEO-плагина. Должен остаться только тот вариант, который вы выбрали как основной. Если отключали ядро, /wp-sitemap.xml должен отдавать 404 или пустой ответ в зависимости от конфигурации и кэша.
Дальше проверьте:
- в sitemap нет страниц с
noindex; - не попали архивы, теги и вложения, если они не нужны;
- в Search Console нет резкого роста ошибок по URL из карты;
- в
robots.txtуказан только актуальный sitemap.
Если сайт кэшируется на уровне плагина, CDN или сервера, очистите кэш после изменения. Иначе вы можете видеть старую карту, хотя код уже исправлен.
Частые ошибки и как их исправить
Отключили sitemap через robots.txt и думают, что проблема решена
Это не отключение, а только подсказка для робота. Генерация карты продолжится, а конфликт между источниками никуда не денется. Нужно убрать сам генератор.
Оставили одновременно ядро WordPress и SEO-плагин
Так часто происходит после обновления или миграции. В результате поисковик видит две карты, а в них — разные наборы URL. Решение: оставить один источник и проверить его настройки.
Сломали sitemap после правки темы
Если код добавлен в functions.php активной темы, при смене темы настройка исчезнет. Для технических отключений лучше использовать отдельный плагин или mu-plugin.
Не очистили кэш
После отключения sitemap старый XML может ещё отдаваться из кэша. Это особенно заметно на сайтах с серверным кэшем и CDN. Очистите все уровни кэширования и проверьте ответ повторно.
Практические советы по безопасности и производительности
Сама карта сайта не должна быть тяжёлой. Если в sitemap попадают сотни тысяч URL, проверьте, не генерируете ли вы лишние типы записей. Чем меньше мусора в карте, тем проще поисковику её обработать и тем меньше лишней нагрузки на сайт.
Для безопасности не стоит публиковать в sitemap служебные или приватные URL. Если у вас есть закрытые разделы, черновики, внутренние страницы поиска или технические endpoints, они не должны попадать в карту вообще.
Если вы используете решения из экосистемы WPShop, для чистки SEO-настроек и удаления лишних дублей может быть уместен Clearfy Pro, но только если вам нужен именно набор технических оптимизаций, а не отдельная точечная правка кода.
Мини-чек-лист перед публикацией изменений
- Проверен основной источник sitemap.
- Лишний генератор отключён, а не скрыт через robots.txt.
- В sitemap остались только нужные типы контента.
- Старый кэш очищен на сайте и CDN.
- В Search Console отправлен актуальный sitemap.
- Проверен ответ
/wp-sitemap.xmlи sitemap SEO-плагина.
Если после отключения sitemap страницы перестали индексироваться, причина обычно не в самой карте, а в noindex, canonical, robots.txt или ошибках ответа сервера. В таком случае проверяйте цепочку целиком, а не возвращайте старую карту «на всякий случай».