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

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

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

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

Проверять карту сайта имеет смысл не «на всякий случай», а если вы видите конкретные симптомы:

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

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

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

Дополнительно проверьте исходный код страницы sitemap и заголовки ответа. Если карта отдается с кодом 200 OK, а по адресу SEO-плагина лежит другая карта, поисковик может выбрать не тот файл, который вы ожидали.

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

Начиная с WordPress 5.5, базовая генерация sitemap встроена в ядро. Её можно отключить через фильтр wp_sitemaps_enabled. Это безопаснее, чем править ядро или удалять файлы вручную.

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

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

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

Если нужен аккуратный и переносимый способ, создайте файл, например disable-core-sitemaps.php в wp-content/plugins/:

<?php
/*
Plugin Name: Disable Core Sitemaps
Description: Отключает встроенный XML sitemap WordPress.
Version: 1.0.0
*/

add_filter( 'wp_sitemaps_enabled', '__return_false' );

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

Чем заменить штатный sitemap

Есть три практических варианта: SEO-плагин, собственный файл или генерация на стороне сервера/CI. Выбор зависит от того, насколько сложная у вас структура сайта и кто будет поддерживать карту сайта дальше.

ВариантКогда подходитПлюсыМинусы
SEO-плагинОбычный контентный сайтПростой контроль, не нужен свой кодЗависимость от плагина и его настроек
Свой XML-файлНужен точный список URLПолный контроль над составомНужно обновлять файл при изменении контента
Генерация скриптомБольшой сайт с автоматизациейМожно встроить в деплой или cronТребует поддержки и тестов

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

Свой sitemap.xml для статей и страниц

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

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

require_once dirname( __FILE__ ) . '/wp-load.php';

$posts = get_posts( array(
    'post_type'      => array( 'post', 'page' ),
    'post_status'    => 'publish',
    'posts_per_page' => -1,
    'orderby'        => 'modified',
    'order'          => 'DESC',
) );

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

foreach ( $posts as $post ) {
    $loc     = esc_url( get_permalink( $post ) );
    $lastmod = mysql2date( 'c', $post->post_modified_gmt, false );

    echo "  <url>\n";
    echo "    <loc>{$loc}</loc>\n";
    echo "    <lastmod>{$lastmod}</lastmod>\n";
    echo "  </url>\n";
}

echo '</urlset>';

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

Как не сломать SEO при замене sitemap

Самая частая ошибка — отключить старую карту и забыть указать новую в robots.txt и в Search Console. Тогда поисковик какое-то время будет ходить по старым адресам, а вы получите шум в отчётах и лишние проверки.

После переключения:

  • убедитесь, что в robots.txt указан актуальный адрес sitemap;
  • проверьте, что старый sitemap не отдаёт 200 с устаревшим содержимым;
  • если меняли структуру URL, дождитесь повторного обхода и не делайте ещё один редизайн карты сразу же;
  • не включайте в sitemap страницы с noindex, редиректы и 404;
  • не добавляйте в карту URL с параметрами, если они не являются каноническими.

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

Проверка должна быть не «на глаз», а по конкретным признакам:

  1. Откройте новый sitemap в браузере и убедитесь, что он отдается с кодом 200.
  2. Проверьте, что в нём только нужные URL и нет служебных разделов.
  3. Посмотрите исходный код ответа: XML должен быть валидным, без HTML-обвязки темы.
  4. В Search Console отправьте новый sitemap и дождитесь статуса обработки.
  5. Проверьте, что старый адрес больше не используется как основной источник.

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

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

Включены два sitemap одновременно

Это бывает, когда ядро WordPress генерирует /wp-sitemap.xml, а SEO-плагин — свой sitemap_index.xml. Решение простое: оставьте один источник и отключите второй. Если нужен плагинный sitemap, отключайте ядро через wp_sitemaps_enabled.

В карту попадают страницы, которые закрыты от индексации

Это не критическая ошибка, но плохая практика. Sitemap должен помогать поисковику, а не отправлять его на страницы, которые вы сами просите не индексировать. Сверьте настройки noindex и состав карты сайта.

Сайт отдает XML с HTML-ошибкой

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

Старый sitemap остался в кеше

Если после замены вы видите прежний файл, проблема часто не в WordPress, а в кэше страницы, nginx fastcgi_cache или CDN. Очистите все уровни кэша и повторите проверку в режиме инкогнито.

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

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

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

Если вам нужно не только убрать дубли и служебные URL, но и централизованно чистить технический мусор в WordPress, имеет смысл посмотреть на инструменты уровня Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какой именно sitemap у вас работает и кто его формирует.

Если коротко: сначала найдите источник карты сайта, затем отключите лишний генератор, потом оставьте один понятный sitemap с нужными URL и проверьте его в браузере и Search Console. Это тот случай, где аккуратная техническая правка даёт больше пользы, чем ещё один SEO-«лайфхак».

Как отключить emoji и лишние Dashicons в WordPress без поломки админки
31.08.2026
Как закрыть дубли страниц в WordPress от пагинации, фильтров и параметров
19.08.2026
Поиск и устранение 404 ошибок в WordPress: как найти источник и исправить без лишних редиректов
28.08.2026
Как отключить REST API для гостей в WordPress и не сломать админку
08.09.2026
Как закрыть от индексации отдельные страницы WordPress без поломки SEO
22.08.2026

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.