Как отключить XML Sitemap в WordPress и заменить его своей картой сайта

Встроенная XML-карта сайта в WordPress часто мешает не сама по себе, а в связке с SEO-плагином, кастомными типами записей или отдельной логикой индексации. Типичный сценарий: в поисковик уходит сразу две карты сайта, часть URL дублируется, а в robots.txt и Search Console появляются разные источники sitemap. Если у вас уже есть Yoast SEO, Rank Math, Clearfy Pro или своя генерация карты сайта, встроенный механизм WordPress лучше отключить и оставить один понятный источник.

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

Когда встроенная XML Sitemap действительно мешает

Сам факт наличия /wp-sitemap.xml не ошибка. Проблема начинается, когда поисковик видит несколько карт сайта с пересекающимися URL или когда одна из карт отдает лишние типы контента: вложения, служебные страницы, архивы без ценности. Тогда в отчётах появляются дубли, а в логике индексации становится сложнее понять, что именно вы хотите продвигать.

Признаки конфликта

  • в robots.txt указан один sitemap, а в браузере открывается ещё и /wp-sitemap.xml;
  • SEO-плагин уже генерирует собственную карту сайта, но WordPress продолжает отдавать встроенную;
  • в Search Console появляются разные источники sitemap с пересекающимися URL;
  • в карте сайта есть записи, которые вы уже закрыли от индексации в плагине или кодом;
  • после обновления WordPress меняется поведение sitemap без вашего участия.

Что проверить перед изменениями

Сначала посмотрите, кто именно сейчас отвечает за sitemap. Это можно сделать без доступа к базе: откройте /wp-sitemap.xml, проверьте robots.txt и настройки SEO-плагина. Если плагин уже генерирует карту сайта, встроенную лучше отключить, а не пытаться «подправить» обе сразу.

ПодходКогда уместенМинус
Оставить встроенную sitemap WordPressПростой сайт без SEO-плагина и без сложной структурыМало гибкости для исключений
Отключить встроенную и использовать SEO-плагинЕсть Yoast SEO, Rank Math или другой генераторНужно следить, чтобы не было второй карты
Сделать свою генерацию кодомНужны нестандартные правила для CPT, таксономий и фильтровБольше ответственности за поддержку

Как отключить встроенную карту сайта WordPress

В WordPress 5.5+ встроенная XML Sitemap включена по умолчанию. Самый чистый способ отключить её — через фильтр wp_sitemaps_enabled. Это безопаснее, чем править ядро или пытаться блокировать URL через robots.txt.

Вариант через functions.php

Если у вас дочерняя тема или отдельный mu-plugin, добавьте такой код:

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

После этого /wp-sitemap.xml должен перестать открываться как карта сайта WordPress. Если у вас уже есть SEO-плагин, он продолжит отдавать свою sitemap отдельно.

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

Для продакшена удобнее вынести это в отдельный mu-plugin, чтобы настройка не зависела от темы:

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

Файл можно положить в wp-content/mu-plugins/disable-core-sitemap.php. Такой вариант не отключится случайно после смены темы.

Если нужна своя карта сайта, а не просто отключение

Иногда встроенную sitemap отключают не ради SEO-плагина, а чтобы отдать поисковику только нужные URL: например, записи определённого типа, страницы каталога знаний или отдельные языковые версии. В таком случае лучше не создавать «вторую случайную sitemap», а сразу определить правила генерации.

Минимальный пример своей sitemap на основе WP_Query

Ниже упрощённый пример, который выводит XML для опубликованных записей. Это не полноценный генератор для большого проекта, но как основа для кастомной логики подходит:

<?php
add_action( 'init', function () {
    add_rewrite_rule( '^custom-sitemap\.xml$', 'index.php?custom_sitemap=1', 'top' );
} );

add_filter( 'query_vars', function ( $vars ) {
    $vars[] = 'custom_sitemap';
    return $vars;
} );

add_action( 'template_redirect', function () {
    if ( (int) get_query_var( 'custom_sitemap' ) !== 1 ) {
        return;
    }

    nocache_headers();
    header( 'Content-Type: application/xml; charset=UTF-8' );

    $query = new WP_Query( array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => 1000,
        'no_found_rows'  => true,
    ) );

    echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

    while ( $query->have_posts() ) {
        $query->the_post();
        echo '<url>';
        echo '<loc>' . esc_url( get_permalink() ) . '</loc>';
        echo '<lastmod>' . esc_html( get_post_modified_time( 'c', true ) ) . '</lastmod>';
        echo '</url>';
    }

    wp_reset_postdata();
    echo '</urlset>';
    exit;
} );

Здесь важно не копировать пример как есть в большой проект без доработки. Для реального сайта нужно ограничить типы записей, исключить черновики, продумать пагинацию sitemap и не отдавать тысячи URL одним ответом, если сайт крупный.

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

  1. Определите, кто сейчас генерирует sitemap: ядро WordPress, SEO-плагин или кастомный код.
  2. Если используется SEO-плагин, проверьте его настройки sitemap и отключите встроенную карту WordPress через wp_sitemaps_enabled.
  3. Убедитесь, что в robots.txt указан только один актуальный адрес sitemap.
  4. Очистите кеш страницы, объектный кеш и CDN, если они есть.
  5. Проверьте ответ /wp-sitemap.xml и URL вашей новой карты сайта.
  6. Обновите sitemap в Search Console, если адрес изменился.

Если sitemap отдаётся через кеш

Иногда после отключения встроенной карты сайт продолжает отдавать старый XML из кеша. Это не баг WordPress, а следствие кеширования на уровне плагина, сервера или CDN. В таком случае сначала очищают кеш, а потом повторно проверяют URL в режиме инкогнито или через curl.

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

Если ответ всё ещё 200 OK и в теле XML старого формата, значит кеш не сброшен или правило переписывания осталось активным.

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

Проверка должна быть не на уровне «страница открывается», а на уровне фактического поведения. Смотрите на статус ответа, содержимое XML и список sitemap в Search Console.

  • Откройте /wp-sitemap.xml — он не должен показывать карту WordPress, если вы её отключали.
  • Проверьте robots.txt — там должен быть один понятный sitemap-адрес.
  • Сравните URL в старой и новой карте сайта: не должно быть пересечений без причины.
  • Посмотрите Search Console: нет ли ошибок чтения sitemap или дублирующих источников.
  • Проверьте несколько URL из карты вручную: они должны открываться с кодом 200 и без редиректов на технические страницы.

Если у вас есть доступ к логам сервера, полезно посмотреть, как поисковый бот запрашивает sitemap после изменения. Это помогает поймать редиректы, 404 и проблемы с кешем раньше, чем они попадут в отчёты.

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

Отключили sitemap в robots.txt, но не в WordPress

Это не решает проблему. Поисковик может всё равно найти /wp-sitemap.xml напрямую. Правильнее отключать генерацию через фильтр, а не только скрывать адрес.

Оставили две карты сайта одновременно

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

Забыли про кеш

После правки кодом старый XML может ещё какое-то время отдаваться из кеша. Если проверять только в браузере, легко решить, что фильтр не сработал. Очистите кеш плагина, серверный кеш и CDN.

Сделали свой sitemap без пагинации

На небольшом сайте это может пройти незаметно, но на большом проекте один огромный XML быстро становится неудобным и для сервера, и для поисковика. Лучше сразу проектировать sitemap с разбиением на части.

Закрыли sitemap в noindex

XML-карта сайта не индексируется как обычная HTML-страница, поэтому noindex тут не основной инструмент. Если вам нужно убрать карту из обхода, отключайте её генерацию или корректно управляйте доступом к URL.

Безопасность и производительность

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

Для производительности полезно помнить ещё одну вещь: sitemap не должен строиться тяжёлым запросом на каждом обращении. Если сайт крупный, лучше кэшировать результат или генерировать файл заранее, а не собирать XML на лету для тысяч записей.

Если вам нужен более широкий набор технических правок — отключение дублей, чистка служебных ссылок, управление sitemap и другими SEO-настройками — такие задачи удобно собирать в одном инструменте вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какой именно механизм вы отключаете и где у него источник.

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

Если сайт маленький, SEO-плагина нет, а структура простая, встроенной карты WordPress может быть достаточно. В таком случае не стоит усложнять стек только ради «идеальной архитектуры». Отключать её имеет смысл тогда, когда есть конкретная причина: конфликт, дубли, нестандартные правила или единая SEO-логика в одном плагине.

Главный ориентир простой: у поисковика должен быть один понятный источник sitemap, а у вас — один способ управлять тем, что туда попадает.

Как отключить XML Sitemap в WordPress и заменить его своей картой сайта
25.08.2026
Как отключить XML-RPC в WordPress без поломки подключений и мобильных приложений
22.08.2026
Как закрыть дубли страниц в WordPress от индексации
15.08.2026
Как закрыть от индексации tag archive в WordPress без поломки SEO
18.08.2026