Как отключить XML sitemap в WordPress через functions.php и не сломать индексацию

Встроенная XML sitemap в WordPress полезна не всегда. На живых проектах она часто конфликтует с SEO-плагином, дублирует карту сайта, отдает лишние URL или просто мешает, если вы уже управляете индексированием через отдельный инструмент. В таких случаях лучше отключить именно встроенную карту, а не пытаться «прикрыть» проблему robots.txt.

Ниже — практический сценарий: как понять, что отключение действительно нужно, как сделать это через код темы или мини-плагин, и как проверить результат без сюрпризов в индексации.

Когда встроенную XML sitemap лучше отключить

С 5.5 WordPress умеет отдавать базовую XML-карту сайта сам. Это удобно для простых проектов, но на сайте с SEO-плагином, кастомными типами записей и отдельной логикой индексации встроенная карта часто становится лишней.

Типичные признаки проблемы

  • в /wp-sitemap.xml открывается карта WordPress, но у вас уже есть sitemap от Yoast, Rank Math, AIOSEO или другого SEO-плагина;
  • в карте появляются служебные URL, которые вы не хотите отдавать поисковикам;
  • в логике проекта есть отдельная генерация sitemap, и две карты начинают конфликтовать;
  • SEO-плагин отключает встроенную карту сам, но после обновления или смены настроек поведение меняется;
  • нужно убрать именно стандартный механизм WordPress, чтобы оставить только один источник sitemap.

Если у вас проблема не в самой карте, а в конкретных URL внутри нее, отключение всей sitemap может быть лишним. В таком случае лучше править настройки SEO-плагина или исключать отдельные типы записей и таксономии.

Диагностика: что именно сейчас отдает WordPress

Перед правкой кода проверьте, кто формирует карту сайта. Это занимает минуту и экономит время на поиске «почему ничего не изменилось».

  1. Откройте /wp-sitemap.xml в браузере.
  2. Посмотрите исходный HTML/XML: если там стандартная структура WordPress с индексом и под-картами, значит работает встроенный механизм.
  3. Проверьте, не отдает ли SEO-плагин свою карту на другом адресе, например /sitemap_index.xml.
  4. Если на сайте есть кеш, очистите его перед повторной проверкой.

Полезно также посмотреть заголовки ответа. Иногда карта уже отключена на уровне кода, но старый кеш продолжает отдавать прежнюю версию.

curl -I https://example.com/wp-sitemap.xml

Если видите 200 OK и содержимое XML, карта активна. Если после отключения кодом адрес начинает отдавать 404, значит механизм выключен корректно.

Как отключить встроенную XML sitemap через functions.php

Самый простой способ — убрать генерацию через фильтр wp_sitemaps_enabled. Это штатный фильтр WordPress, он не требует сторонних плагинов и работает предсказуемо.

<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );

Этот код можно добавить в functions.php дочерней темы или, что надежнее, в небольшой mu-plugin. Для production-сайта второй вариант обычно безопаснее: он не зависит от смены темы.

Вариант через мини-плагин

Создайте файл, например wp-content/mu-plugins/disable-wp-sitemap.php, и добавьте туда:

<?php
/**
 * Plugin Name: Disable WP Sitemap
 */
add_filter( 'wp_sitemaps_enabled', '__return_false' );

Mu-plugin загружается раньше обычных плагинов и не отключается случайно из админки. Для технической настройки это часто удобнее, чем править тему.

Если нужно отключить только часть 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;
} );

Такой подход полезен, если вы еще не перешли на внешний SEO-плагин или хотите оставить встроенную карту только для части контента. Но если у вас уже есть полноценная sitemap от SEO-плагина, обычно проще отключить встроенную полностью.

Сравнение подходов: плагин, код, robots.txt

ПодходКогда подходитПлюсыМинусы
Фильтр wp_sitemaps_enabledНужно отключить встроенную карту WordPressШтатный способ, минимум кодаНужно не забыть про кеш и проверить SEO-плагин
Mu-pluginНужна стабильность при смене темыНе зависит от темы, легко поддерживатьНужно создать отдельный файл
robots.txtНужно скрыть карту от обходаБыстро и простоНе отключает генерацию, а только подсказывает роботам; это не решение конфликта

Важно: закрытие sitemap в robots.txt не выключает сам механизм WordPress. Если карта уже конфликтует с SEO-плагином, robots.txt проблему не решит.

Пошаговое решение без лишнего риска

  1. Проверьте, какая sitemap сейчас активна: встроенная WordPress или карта SEO-плагина.
  2. Если используется SEO-плагин, убедитесь, что он сам не отключает встроенную карту. Иногда достаточно его настроек.
  3. Добавьте add_filter( 'wp_sitemaps_enabled', '__return_false' ); в дочернюю тему или mu-plugin.
  4. Очистите кеш сайта, CDN и браузера.
  5. Проверьте /wp-sitemap.xml и убедитесь, что адрес больше не отдает карту.
  6. Проверьте, что основная sitemap SEO-плагина продолжает открываться и содержит нужные URL.

Как проверить, что решение сработало

Проверка должна быть не только визуальной. На практике лучше пройтись по нескольким точкам.

  • Открыть /wp-sitemap.xml — адрес должен вернуть 404 или пустой ответ в зависимости от конфигурации и кеша.
  • Проверить карту SEO-плагина — она должна остаться доступной.
  • Посмотреть исходный код страницы — если в <head> больше нет ссылки на встроенную sitemap, значит фильтр отработал.
  • Проверить Search Console — после переобхода не должно появляться новых ошибок, связанных с недоступной картой, если вы не удаляли основную sitemap.

Если сайт за кеширующим прокси, проверяйте не только браузер, но и ответ сервера напрямую через curl или инструменты разработчика.

Частые ошибки и как их исправить

Отключили не там, где нужно

Если код добавили в родительскую тему, а потом обновили тему, настройка пропала. Для постоянного решения используйте дочернюю тему или mu-plugin.

Проверили страницу без очистки кеша

После правки WordPress может уже не генерировать sitemap, но кеш продолжает отдавать старую версию. Очистите кеш плагина, серверный кеш и CDN.

Отключили встроенную sitemap, но забыли про SEO-плагин

Если SEO-плагин тоже генерирует sitemap, убедитесь, что у вас остался один источник. Две карты сайта — частая причина путаницы в индексации.

Пытались решить все через robots.txt

Это не отключает генерацию. Если цель — убрать конфликтующий механизм, нужен именно код или настройка плагина.

Практические советы по безопасности и производительности

Сама по себе XML sitemap не тяжелая, но на больших сайтах лишние генераторы и дубли создают шум в поддержке и диагностике. Чем меньше источников sitemap, тем проще контролировать индексацию.

  • не держите одновременно несколько активных генераторов карты сайта без необходимости;
  • если используете SEO-плагин, проверьте его настройки перед добавлением кода;
  • для постоянных технических правок предпочитайте mu-plugin, а не редактирование темы;
  • после изменений всегда проверяйте ответ сервера и кеширующие слои.

Если вам нужно регулярно чистить сайт от дублей, служебных URL и лишних технических страниц, удобно держать это в одном инструменте. Например, в Clearfy Pro есть набор настроек для технической оптимизации, но даже с ним полезно понимать, какой именно механизм вы отключаете и почему.

Как закрыть открытые архивы таксономий в WordPress без потери индексации
06.09.2026
Как отключить XML-RPC в WordPress без поломки входов и синхронизации
17.08.2026
Как закрыть старые URL после смены ЧПУ в WordPress и не потерять трафик
13.09.2026
Как отключить открытые XML feed в WordPress и убрать лишнюю индексацию
27.08.2026
Как убрать старую версию страниц из индекса после переезда на новый шаблон в WordPress
16.09.2026