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

Встроенный XML sitemap в WordPress удобен до тех пор, пока не начинается конфликт с SEO-плагином, кастомными типами записей или ручной логикой индексации. Типичный сценарий: в поиске уже есть карта сайта от Yoast, Rank Math или другого плагина, а в корне сайта внезапно появляется ещё и /wp-sitemap.xml. В результате вы получаете дублирующие карты, лишние запросы к краулеру и путаницу в том, какую карту отправлять в Search Console.

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

Когда встроенный sitemap действительно мешает

Сам по себе wp-sitemap.xml не ошибка. Проблема начинается, когда он конфликтует с вашей схемой индексации. Это особенно заметно на сайтах, где:

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

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

Диагностика: кто именно отдаёт карту сайта

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

Что проверить вручную

  • Откройте /wp-sitemap.xml в браузере.
  • Проверьте, не редиректит ли он на карту SEO-плагина.
  • Посмотрите исходный код страницы карты: там обычно видно, какой генератор её создал.
  • Если используете Yoast или Rank Math, проверьте их настройки sitemap отдельно.

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

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

Самый надёжный способ — через фильтр wp_sitemaps_enabled. Он есть в ядре WordPress и позволяет полностью выключить встроенный генератор.

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

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

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

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

Когда этого недостаточно

Иногда карта WordPress уже отключена, но URL /wp-sitemap.xml всё ещё отвечает 200. Это обычно означает, что:

  • SEO-плагин перехватывает маршрут и отдаёт свою карту;
  • на сервере есть кэшированная версия старого ответа;
  • включён редирект на другой sitemap через плагин безопасности или правила сервера.

В таком случае сначала очистите кэш, потом проверьте настройки SEO-плагина и только после этого делайте выводы.

Чем заменить стандартный sitemap

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

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

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

Как сделать свой sitemap для конкретного типа записей

Иногда стандартная карта WordPress не нужна вообще, а нужен отдельный XML для одного типа контента, например для product, portfolio или кастомного справочника. В этом случае лучше не пытаться «допиливать» ядро, а отдать свой XML-ответ через template_redirect или отдельный rewrite endpoint.

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

<?php
add_action( 'template_redirect', function () {
    if ( ! isset( $_GET['news-sitemap'] ) ) {
        return;
    }

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

    $posts = get_posts( array(
        'post_type'      => 'news',
        'post_status'    => 'publish',
        'posts_per_page' => 100,
        'no_found_rows'  => true,
    ) );

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

    foreach ( $posts as $post ) {
        echo '<url>';
        echo '<loc>' . esc_url( get_permalink( $post ) ) . '</loc>';
        echo '<lastmod>' . esc_html( get_post_modified_time( 'c', true, $post ) ) . '</lastmod>';
        echo '</url>';
    }

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

Это не готовая замена полноценному sitemap-решению, но для узкого сценария работает. Если нужен красивый URL без параметра, добавьте rewrite rule и отдельный шаблон ответа.

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

  1. Проверьте, какой sitemap сейчас активен: ядро WordPress, SEO-плагин или оба сразу.
  2. Если используется SEO-плагин, убедитесь, что его карта остаётся включённой после отключения ядра.
  3. Добавьте фильтр wp_sitemaps_enabled через mu-plugin или дочернюю тему.
  4. Очистите кэш сайта, CDN и браузера.
  5. Проверьте /wp-sitemap.xml и основной sitemap SEO-плагина.
  6. Отправьте в Search Console только тот sitemap, который вы реально хотите поддерживать.

Проверка результата после внедрения

После отключения встроенной карты важно не ограничиваться открытием URL в браузере. Проверьте несколько уровней:

  • /wp-sitemap.xml должен отдавать 404, 410 или редирект на ваш основной sitemap — в зависимости от вашей логики;
  • основной sitemap SEO-плагина должен открываться без ошибок;
  • в Search Console не должно быть новых ошибок по карте сайта;
  • в логах сервера не должно быть массовых запросов к старому sitemap после очистки кэша;
  • если у вас есть кэширующий плагин, убедитесь, что XML не кэшируется как обычная HTML-страница.

Быстрая проверка через консоль:

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

Если первый запрос возвращает 404 или редирект на нужный адрес, а второй — валидный XML, значит схема работает как задумано.

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

Отключили sitemap в ядре, но карта всё равно открывается

Это почти всегда означает, что её отдаёт SEO-плагин. Проверьте настройки карты в Yoast, Rank Math или другом плагине и не ищите проблему в WordPress core.

Сайт начал отдавать 404 на все sitemap

Частая причина — вы отключили встроенную карту, но не включили альтернативу. Если SEO-плагин не активен, поисковикам просто нечего читать. В таком случае верните карту либо настройте собственный XML.

В Search Console осталась старая карта

Это не баг WordPress. Search Console хранит отправленные карты отдельно. Удалите старую запись вручную и добавьте актуальную.

XML кэшируется как обычная страница

Некоторые кэширующие плагины и CDN не различают XML и HTML без дополнительных правил. Для sitemap лучше исключить URL из кэша или настроить отдельное правило.

Что учесть для безопасности и производительности

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

С точки зрения безопасности не стоит публиковать в sitemap служебные или приватные сущности, даже если они технически доступны по URL. Карта сайта — это не просто список страниц, а подсказка для поисковиков и сторонних ботов о том, что у вас есть на сайте.

Если вам нужен более широкий контроль над технической чисткой WordPress, удобно держать это в одном месте: отключение дублей, управление архивами, чистка служебных элементов и настройка sitemap не должны жить в случайных кусках кода по разным файлам.

Как убрать дубли страниц в WordPress из-за архивов тегов, авторов и дат
30.08.2026
Как закрыть от индексации страницы авторов в WordPress
07.09.2026
Как закрыть от индексации страницы архивов категорий в WordPress
18.09.2026
Как отключить Emoji в WordPress и убрать лишние скрипты из head
14.09.2026
Как отключить XML sitemap в WordPress и заменить его своим
11.09.2026