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

Ситуация типовая: в XML-карте сайта появляются URL, которые не должны попадать в индекс — служебные страницы, архивы с мусором, вложения, результаты поиска, тестовые записи, иногда даже дубли из кастомных типов записей. Если просто удалить их из sitemap, не понимая источник генерации, можно получить расхождение между картой сайта, canonical и реальной индексацией. Поэтому сначала нужно понять, кто именно добавляет эти URL, а уже потом отключать их точечно.

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

Не каждый лишний URL в поиске означает ошибку карты сайта. Но если в Google Search Console в отчёте по sitemap видны страницы, которые вы не хотите индексировать, или если в XML-файле есть разделы вроде post_tag, attachment, author и служебные архивы, это уже повод вмешаться. Особенно часто проблема возникает после установки SEO-плагина, миграции темы или добавления кастомных типов записей без настройки их публичности.

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

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

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

Диагностика: откуда WordPress берёт URL для sitemap

В современном WordPress карта сайта часто генерируется ядром, но SEO-плагины могут её переопределять. Поэтому сначала нужно понять источник. Если у вас установлен Yoast SEO, Rank Math или похожий плагин, настройка обычно делается в его интерфейсе. Если карта сайта формируется ядром или кастомным кодом, тогда пригодятся фильтры WordPress.

Проверка простая: откройте XML-файл и посмотрите, какие разделы в нём есть. Если проблема только в одном типе записей, не трогайте всё подряд. Если в sitemap попали вложения, часто достаточно отключить их генерацию и одновременно закрыть сами attachment-страницы от индексации.

Пошаговое решение через код

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );
    unset( $post_types['page'] ); // если нужно убрать служебные страницы, но не делайте это бездумно
    return $post_types;
} );

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    unset( $taxonomies['post_format'] );
    return $taxonomies;
} );

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

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

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    return $args;
}, 10, 2 );

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

Если sitemap создаёт SEO-плагин

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

ПодходКогда подходитПлюсМинус
Настройки SEO-плагинаЕсли sitemap генерирует плагинБыстро и прозрачноЗависит от интерфейса и версии
Фильтры WordPressЕсли нужен точечный контрольГибко и предсказуемоНужно поддерживать код
Отключение через robots.txtТолько для обхода, не для удаления из sitemapПросто внедритьНе убирает URL из карты сайта

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

Как закрыть служебные страницы и не получить дубли

Частая ошибка — убрать URL из sitemap, но оставить страницу доступной и индексируемой по прямой ссылке. Тогда она продолжит жить в поиске, а карта сайта просто перестанет помогать. Для служебных страниц нужен полный сценарий: убрать из sitemap, поставить noindex, а при необходимости ещё и закрыть внутренние ссылки на них.

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

Мини-чек-лист перед публикацией изменений

  • проверить, что нужные типы записей остались в sitemap;
  • убедиться, что служебные URL исчезли из XML;
  • открыть проблемную страницу и проверить meta robots;
  • посмотреть, не ведут ли внутренние ссылки на исключённые URL;
  • очистить кеш сайта и CDN, если они используются;
  • пересобрать sitemap, если плагин делает это вручную или по расписанию.

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

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

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

Полезно также проверить ответ сервера для самого sitemap. Он должен отдавать 200 OK, а не редиректить на HTML-страницу или ошибку. Если sitemap отдаётся через редирект, некоторые краулеры обрабатывают его хуже.

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

Убрали URL из sitemap, но они остались в индексе

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

Сломали sitemap целиком

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

Изменения не видны после правки кода

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

Исключили важные страницы

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

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

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

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

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

Когда карта сайта приведена в порядок, проверьте ещё и внутренние ссылки: если исключённые страницы всё ещё активно линкованы из меню, футера или блоков контента, поисковик продолжит на них натыкаться. Sitemap — это только один слой технической оптимизации, а не замена нормальной архитектуре сайта.

Как исключить строки из sitemap в WordPress и не сломать индексацию
20.08.2026
Как отключить XML-RPC в WordPress без поломки входов и синхронизации
17.08.2026
Как закрыть дубли страниц с помощью canonical и noindex в WordPress
14.08.2026