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

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

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

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

Отключать стандартную карту сайта имеет смысл не всегда. Но если у вас уже есть Yoast SEO, Rank Math, Clearfy Pro или собственная генерация XML, дублировать карту сайта ядром WordPress обычно не нужно. Особенно это заметно, когда:

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

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

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

Сначала проверьте, действительно ли карта сайта генерируется ядром, а не плагином. Откройте в браузере /wp-sitemap.xml. Если страница доступна и отдает XML-индекс, значит стандартный sitemap активен.

Дополнительно посмотрите заголовки ответа и код статуса:

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

Нормальная картина для активной карты сайта — 200 OK. Если вы уже отключали её через плагин или код, но URL всё ещё открывается, значит правило не сработало или его перекрывает другой слой.

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

  • есть ли SEO-плагин, который уже генерирует sitemap;
  • не кэшируется ли XML на уровне сервера или CDN;
  • не добавлен ли редирект на /wp-sitemap.xml в .htaccess или конфиге nginx;
  • не используется ли MU-плагин, который вмешивается в карту сайта.

Пошаговое решение: отключаем стандартный XML Sitemap

В WordPress 5.5+ встроенная карта сайта подключается через фильтр wp_sitemaps_enabled. Это самый прямой и безопасный способ отключения.

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

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

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

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

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

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

Если нужен свой sitemap: как сделать без конфликта с ядром

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

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

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

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

    header( 'Content-Type: application/xml; charset=UTF-8' );
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

    $posts = get_posts( [
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => 100,
        'fields'         => 'ids',
        'no_found_rows'  => true,
    ] );

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

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

После добавления такого кода не забудьте сбросить правила ЧПУ: зайдите в Настройки → Постоянные ссылки и просто нажмите «Сохранить». Это обновит rewrite rules.

Сравнение подходов: плагин, код или SEO-плагин

ПодходКогда подходитПлюсыМинусы
Фильтр wp_sitemaps_enabledНужно отключить только встроенный sitemapМинимум кода, без лишней логикиНе решает задачу генерации альтернативной карты
SEO-плагинУже используется для индексации и canonicalОдна точка управления, обычно есть sitemap indexНужно следить за настройками и конфликтами модулей
Собственный XML-эндпоинтНужен узкий контроль над составом URLПолная кастомизацияНужно поддерживать код и следить за валидностью XML

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

Проверка должна быть не только визуальной. Смотрите на три вещи: ответ сервера, содержимое XML и отсутствие дублей в источниках карты сайта.

  1. Откройте /wp-sitemap.xml в браузере.
  2. Проверьте через curl -I, что URL больше не отдаёт активный XML, если вы отключали карту полностью.
  3. Если используете SEO-плагин, убедитесь, что в Search Console указан именно его sitemap, а не старый адрес WordPress.
  4. Проверьте robots.txt: там не должно остаться ссылок на неактуальные карты сайта.

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

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

Код добавили в тему, а после обновления он исчез

Это классическая ошибка. Если отключение sitemap критично для проекта, не держите его в родительской теме. Используйте дочернюю тему или MU-плагин.

Отключили sitemap, но /wp-sitemap.xml всё ещё открывается

Чаще всего виноват кеш или другой плагин, который повторно включает генерацию. Проверьте, нет ли SEO-плагина, который создаёт собственный sitemap и маскирует проблему.

Появился 404 вместо ожидаемого XML

Это нормально, если вы отключали встроенную карту полностью. Но если вы планировали заменить её своим адресом, убедитесь, что rewrite rule добавлен до вывода и что вы сбросили постоянные ссылки.

XML стал невалидным

Обычно причина в лишнем пробеле, BOM в PHP-файле или случайном HTML до XML-заголовка. Для sitemap это критично: один лишний символ ломает весь документ.

Безопасность и производительность: что не стоит упускать

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

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

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

Что делать после внедрения

После отключения или замены sitemap не ограничивайтесь одной проверкой в браузере. Обновите адрес карты сайта в Search Console, проверьте логи обхода и посмотрите, не осталось ли старых ссылок в XML, robots.txt и внутренних настройках SEO-плагина. Если карта сайта была частью миграции или редизайна, сохраните изменения в виде маленького MU-плагина или отдельного сниппета в репозитории проекта — так проще отследить, почему она отключена и кто это сделал.

Как отключить XML-RPC в WordPress без поломки синхронизации и внешних сервисов
10.09.2026
Как закрыть от индексации внутренний поиск WordPress и убрать мусорные страницы
31.08.2026
Как исправить дубли страниц в WordPress: canonical, noindex и пагинация
28.08.2026
Как отключить XML Sitemap в WordPress и заменить его своим вариантом
06.09.2026
Как закрыть от индексации технические страницы WordPress: архивы, теги, авторы и служебные URL
03.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше