Встроенные XML sitemaps в WordPress удобны, пока сайт маленький и структура простая. Но на проектах с фильтрами, архивами, кастомными типами записей и отдельной SEO-логикой они часто становятся источником лишних URL в индексе, дублирования карт и путаницы в настройках поисковых систем. В таких случаях задача обычно не в том, чтобы «убрать sitemap вообще», а в том, чтобы отключить стандартный генератор WordPress и оставить только те карты, которые реально нужны.
Когда встроенный sitemap начинает мешать
С 5.5 WordPress сам отдаёт XML sitemap по адресу /wp-sitemap.xml. Для базового сайта это нормально, но на практике возникают типовые сценарии:
- SEO-плагин уже генерирует собственную карту сайта, а в индексе оказываются две разные sitemap-структуры;
- в карту попадают таксономии, архивы или типы записей, которые вы не хотите индексировать;
- поисковик регулярно обходит служебные URL, которые не дают ценности;
- после миграции старый sitemap остаётся доступным, и в Search Console появляются лишние источники URL.
Если у вас уже настроены noindex, canonical и фильтрация дублей, встроенная карта сайта может быть просто лишней. Но отключать её стоит осознанно: сначала проверьте, кто именно сейчас отдаёт sitemap — ядро WordPress, SEO-плагин или серверный rewrite.
Диагностика: кто генерирует карту сайта
Откройте в браузере /wp-sitemap.xml и посмотрите на ответ. Если карта открывается без установленного SEO-плагина, это стандартный генератор WordPress. Если URL редиректит на карту плагина или отдаёт другой формат, значит, источник уже не ядро.
Проверка через код
На стороне темы или небольшого mu-plugin можно быстро понять, включён ли встроенный генератор:
<?php
if ( function_exists( 'wp_sitemaps_get_server' ) ) {
$server = wp_sitemaps_get_server();
if ( $server ) {
error_log( 'WordPress sitemap server is active' );
}
}
Это не отключает ничего само по себе, но помогает убедиться, что вы работаете именно с ядром WordPress, а не с картой от плагина.
Как отключить встроенные XML sitemaps в WordPress
Самый безопасный способ — через фильтр wp_sitemaps_enabled. Он есть в ядре и позволяет полностью выключить стандартный генератор без правки файлов WordPress.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );
Код лучше добавить в functions.php дочерней темы или, что надёжнее, в небольшой mu-plugin. Тогда он не потеряется при обновлении темы.
Вариант через mu-plugin
Создайте файл, например wp-content/mu-plugins/disable-wp-sitemaps.php:
<?php
/**
* Plugin Name: Disable WordPress Core Sitemaps
*/
add_filter( 'wp_sitemaps_enabled', '__return_false' );
После этого /wp-sitemap.xml должен перестать открываться как карта ядра. Если на этом же адресе продолжает отвечать sitemap, значит, его подменяет другой плагин или серверная настройка.
Что делать, если sitemap нужен, но не весь
Полностью отключать карту сайта не всегда правильно. Часто нужно оставить только записи и страницы, а служебные архивы, медиа-attachment и часть таксономий убрать. Для этого у WordPress есть отдельные фильтры по типам объектов.
Исключаем ненужные типы из sitemap
<?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;
} );
Такой подход полезен, если вам нужна карта сайта, но не нужен весь стандартный набор. Например, на контентных проектах часто оставляют только post и page, а служебные таксономии отключают.
Сравнение подходов: плагин, код или гибрид
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Отключить ядро кодом | Есть SEO-плагин или своя карта сайта | Просто, прозрачно, без лишней логики | Нужно следить за другими источниками sitemap |
| Настроить SEO-плагин | Нужна гибкая карта сайта по типам контента | Удобно управлять исключениями из админки | Легко получить дубли, если не выключить ядро |
| Гибрид | Сложная структура сайта | Можно оставить только нужные разделы | Требует проверки после обновлений |
Если у вас уже стоит SEO-плагин, проверьте его настройки sitemap до того, как отключать ядро. Иначе можно случайно убрать все карты сайта сразу.
Пошаговое решение без потери индексации
- Проверьте, кто отдаёт
/wp-sitemap.xmlи нет ли второй карты от SEO-плагина. - Если карта ядра не нужна, добавьте фильтр
wp_sitemaps_enabledсо значениемfalse. - Если sitemap нужен частично, отключите только лишние типы через
wp_sitemaps_post_typesиwp_sitemaps_taxonomies. - Убедитесь, что основная карта сайта остаётся доступной по одному стабильному адресу.
- Обновите карту сайта в Google Search Console и проверьте, нет ли старых URL в отчётах.
Как проверить, что решение сработало
После внедрения проверьте не только URL в браузере, но и ответ сервера.
/wp-sitemap.xmlне должен отдавать карту ядра, если вы её отключили;- в исходном коде страниц не должно быть ссылок на старую карту, если она больше не используется;
- в Search Console должен остаться один актуальный источник sitemap;
- в логах обхода не должно быть массовых запросов к служебным sitemap-URL.
Для быстрой проверки можно использовать curl:
curl -I https://example.com/wp-sitemap.xml
Если вы отключали карту полностью, ожидаемое поведение — не 200 OK с XML-контентом. Если же sitemap должен остаться, проверьте, что открывается именно нужный файл, а не старый адрес ядра.
Частые ошибки и как их исправить
Отключили ядро, но в индексе всё равно две карты
Значит, второй sitemap генерирует SEO-плагин или отдельный модуль. Проверьте настройки карты сайта в плагине и убедитесь, что старый адрес не редиректит на новый без вашего контроля.
Удалили sitemap, а Search Console начала ругаться
Это ожидаемо, если вы не добавили замену. Поисковику нужен актуальный источник карты сайта. Сначала включите новую карту, потом отключайте старую.
Сломали карту для пользовательских типов записей
Так бывает, если вы отключили всё через wp_sitemaps_enabled, а потом забыли включить альтернативу. Для CPT лучше использовать точечную фильтрацию, а не полное отключение.
Правили ядро WordPress вручную
Так делать не стоит: обновление всё перезатрёт. Используйте фильтр, mu-plugin или дочернюю тему.
Практические советы по безопасности и производительности
Если sitemap генерируется динамически и сайт большой, лишние обращения к нему тоже создают нагрузку. Это не критично на небольших проектах, но на крупных каталогах и медиа-сайтах лучше не держать в карте то, что не нужно поиску.
- не добавляйте в sitemap служебные URL, которые вы всё равно закрываете от индексации;
- не держите одновременно несколько карт сайта без понятной схемы;
- после изменений проверьте robots.txt и ссылки на sitemap в SEO-плагине;
- если используете кэширование, убедитесь, что XML-ответ не ломается заголовками кеша.
Если вам нужна более широкая чистка SEO-следов и дублей, имеет смысл смотреть в сторону инструментов вроде Clearfy Pro: там удобно отключать лишние элементы и наводить порядок в технических настройках сайта. Но даже с плагином важно понимать, что именно вы выключаете и какой адрес карты сайта остаётся основным.
В итоге рабочая схема обычно простая: либо вы полностью отключаете встроенный sitemap WordPress и отдаёте управление SEO-плагину, либо оставляете ядро, но режете его по типам контента. Главное — после изменений проверить фактический ответ сервера и не оставить поисковику два конкурирующих источника карты сайта.