В WordPress часто проблема не в том, что sitemap отсутствует, а в том, что их становится слишком много: карта постов, страниц, рубрик, авторов, тегов, медиа, а иногда еще и дубли от SEO-плагина. В итоге в Search Console всплывают лишние URL, а в индексе остаются служебные страницы, которые не дают трафика и только размывают структуру сайта.
Если задача простая — оставить только нужные XML-sitemap и убрать мусорные, — это лучше делать не наугад, а по схеме: сначала понять, кто именно генерирует карты, потом отключить лишние типы, затем проверить, что поисковик видит только то, что нужно.
Когда это действительно проблема
Сценарий обычно выглядит так: вы открываете /sitemap_index.xml и видите там десяток карт, часть из которых ведет на архивы, теги без контента или медиа-страницы. Иногда sitemap генерирует сам WordPress, иногда SEO-плагин, а иногда оба сразу. В результате:
- в индексе появляются страницы, которые не должны ранжироваться;
- в Search Console растет число обнаруженных URL без пользы для сайта;
- робот тратит обход на служебные разделы;
- при смене SEO-плагина старые карты продолжают отдавать 200 OK и создают путаницу.
Что проверить в первую очередь
Откройте в браузере:
/sitemap_index.xml— если используется SEO-плагин;/wp-sitemap.xml— встроенные карты WordPress 5.5+;/robots.txt— есть ли там ссылка на sitemap и не осталось ли старых адресов.
Если одновременно доступны и /sitemap_index.xml, и /wp-sitemap.xml, это уже повод проверить, не дублируют ли они друг друга. Для сайта лучше оставить один источник sitemap, а второй отключить или закрыть от обхода.
Какой вариант решения выбрать
Есть три рабочих подхода: через настройки SEO-плагина, через код в теме или mu-plugin, и через серверные правила. Для большинства сайтов безопаснее начинать с настроек плагина. Код нужен, когда нужно тонко убрать только отдельные типы карт, а не рубить всё целиком.
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Настройки SEO-плагина | Если карты генерирует Yoast, Rank Math или похожий плагин | Безопасно и без правки кода | Не всегда можно отключить именно нужный тип |
Код в functions.php или mu-plugin | Нужно убрать конкретные карты WordPress | Точный контроль | Нужно аккуратно тестировать после обновлений |
| robots.txt / сервер | Нужно закрыть доступ к старым адресам | Быстро убрать мусор из обхода | Не отключает генерацию карты, только доступ к ней |
Пошаговое решение: отключаем лишние XML-sitemap
Шаг 1. Уберите дублирующую генерацию
Если у вас уже работает SEO-плагин, сначала проверьте его настройки sitemap. В большинстве случаев встроенные карты WordPress лучше отключить, чтобы не было двух независимых источников.
Для отключения встроенного sitemap WordPress добавьте код в functions.php дочерней темы или, лучше, в отдельный mu-plugin:
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Этот вариант отключает именно встроенный генератор WordPress. После этого /wp-sitemap.xml должен отдавать 404 или редирект, если его отдельно обрабатывает плагин.
Шаг 2. Если нужен sitemap, но без лишних типов
Иногда полностью отключать 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;
} );
add_filter( 'wp_sitemaps_users', '__return_false' );Здесь логика простая: оставляете только то, что реально должно попадать в индекс. Если на сайте теги используются как навигация и у них есть уникальный контент, не отключайте их автоматически — сначала проверьте, есть ли у них SEO-смысл.
Шаг 3. Закройте старые адреса sitemap от путаницы
Если раньше у сайта был другой sitemap, старые URL лучше не оставлять висеть в воздухе. Минимум — добавьте актуальный адрес в robots.txt и убедитесь, что старые карты дают 404 или 301 на новый индекс.
Пример строки для robots.txt:
Sitemap: https://example.com/sitemap_index.xmlЕсли вы отключили встроенный sitemap WordPress и используете карту от SEO-плагина, в robots.txt должен остаться только один актуальный адрес. Дублировать ссылки на разные sitemap не нужно.
Диагностика: как понять, что всё сработало
После изменений не ограничивайтесь открытием страницы в браузере. Проверьте ответ сервера и индексацию по факту.
- Откройте
/wp-sitemap.xmlи/sitemap_index.xmlв режиме инкогнито. - Проверьте HTTP-статус через
curl -I https://example.com/wp-sitemap.xml. - Убедитесь, что в sitemap остались только нужные типы URL.
- Посмотрите в Google Search Console раздел с sitemap и дождитесь обновления статуса.
Если sitemap отключен, но URL продолжает отдавать 200 OK, значит его перехватывает не WordPress, а плагин, кэш или серверное правило. В таком случае искать нужно не в теме, а в конфигурации сайта.
Что считать нормальным результатом
Нормально, если:
- старый sitemap больше не открывается как рабочая карта;
- в sitemap нет архивов, которые вы сознательно исключили;
- в Search Console не появляются новые ошибки по этим URL;
- robots.txt указывает только на один актуальный sitemap.
Частые ошибки и как их исправить
Отключили sitemap, а поисковик всё равно видит старые URL
Это обычно не баг WordPress. Чаще всего старые URL уже были в индексе, и их нужно не только убрать из sitemap, но и дождаться переобхода. Если страница больше не нужна, она должна отдавать корректный статус: 404 или 410, а не просто исчезать из карты.
Удалили слишком много типов
Иногда после правки кода пропадают и нужные карты. Такое бывает, если вы без проверки отключили целый массив, а не отдельный элемент. Всегда тестируйте по одному изменению и не копируйте код вслепую между сайтами с разной структурой контента.
Остался кэш старого sitemap
Если у вас включен кэш страницы или CDN, старый XML может продолжать отдаваться даже после правки. Очистите кэш плагина, серверный кэш и CDN, затем проверьте заголовки ответа повторно.
Смешали встроенный sitemap WordPress и sitemap SEO-плагина
Это одна из самых неприятных ситуаций. Внешне кажется, что всё работает, но на деле поисковик получает два источника карт. Решение простое: оставьте один генератор sitemap и отключите второй полностью.
Безопасность и производительность
С точки зрения производительности sitemap не самый тяжелый участок, но на больших сайтах он может создавать лишнюю нагрузку, если генерируется на лету и постоянно пересчитывается. Поэтому:
- не держите одновременно два генератора sitemap;
- не включайте в карту лишние архивы и медиа без необходимости;
- проверяйте, не создает ли плагин отдельные карты для каждого таксономического архива;
- после изменений очищайте кэш, иначе диагностика будет ложной.
Если вы правите кодом, лучше вынести его в mu-plugin, а не в активную тему. Тогда настройка не сломается после смены дизайна. Для небольших правок это надежнее, чем держать их в functions.php.
Практический чек-лист перед публикацией изменений
- Проверен источник sitemap: WordPress или SEO-плагин.
- Отключены дублирующие карты.
- Из sitemap убраны только те типы, которые не нужны в индексе.
- robots.txt содержит один актуальный адрес sitemap.
- Кэш сайта и CDN очищены.
- Статус старых URL проверен через браузер и
curl. - В Search Console нет новых ошибок по sitemap.
Если вам нужно не просто отключить лишние карты, а системно убрать дубли, служебные страницы и мусорные URL, удобно делать это в одном месте через набор SEO-настроек и технической чистки. В таких задачах часто помогает Clearfy Pro, если вы хотите централизовать часть технических правок без разрозненных сниппетов.