Исключение страниц из XML sitemap в WordPress: как убрать служебные и мусорные URL

Если в XML sitemap попадают страницы поиска, архивы с пустым контентом, служебные URL или дубли, это обычно не ломает сайт сразу, но мешает индексации и размывает сигнал для поисковых систем. В WordPress такая проблема часто появляется после установки SEO-плагина, смены темы или добавления кастомных типов записей.

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

Когда sitemap нужно чистить

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

Типичные лишние URL

  • страницы внутреннего поиска вида ?s=;
  • архивы автора на сайтах с одним автором;
  • страницы пагинации, если они не нужны в индексе;
  • служебные таксономии и метки с пустыми архивами;
  • кастомные типы записей, которые используются только внутри админки;
  • страницы фильтров и параметров, если они генерируются темой или плагином.

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

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

Проверьте три вещи:

  1. есть ли URL в самой карте сайта;
  2. отдаёт ли он 200 OK или уже закрыт от индексации;
  3. не генерируется ли он отдельным плагином или шаблоном темы.

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

Как исключить URL через SEO-плагин

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

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

ПодходКогда использоватьМинус
Настройка в SEO-плагинеЕсли URL создаёт сам плагинЗависит от конкретного плагина и его интерфейса
Код в теме или mu-pluginЕсли нужен точечный контрольНужно следить за обновлениями и совместимостью
Отключение генерации целого типаЕсли тип записей вообще не должен индексироватьсяМожет скрыть полезные страницы, если ошибиться с выбором

Исключение страниц из sitemap через код

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

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

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'page' === $post_type ) {
        $args['post__not_in'] = array( 12, 34, 56 );
    }

    return $args;
}, 10, 2 );

Если нужно убрать целый тип записей из sitemap, проще отключить его генерацию через фильтр wp_sitemaps_post_types:

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['landing'] );

    return $post_types;
} );

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

Когда нужен именно mu-plugin

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

<?php
/**
 * Plugin Name: Sitemap exclusions
 */

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 101, 102 );
    }

    return $args;
}, 10, 2 );

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

  1. Составьте список URL, которые не должны быть в sitemap.
  2. Проверьте, создаёт ли их WordPress ядро, SEO-плагин или тема.
  3. Если есть настройка в плагине — используйте её первой.
  4. Если настройки нет или она слишком грубая — добавьте фильтр в mu-plugin.
  5. После правки очистите кеш сайта и кеш CDN, если он есть.
  6. Заново откройте sitemap и убедитесь, что проблемные URL исчезли.

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

Недостаточно просто убрать URL из кода. Нужно проверить, что карта сайта действительно обновилась и не отдаёт старую версию из кеша.

  • откройте основной sitemap и дочерние файлы;
  • поиск по проблемному URL должен ничего не находить;
  • проверьте заголовок ответа: sitemap должен отдавать 200 OK;
  • если используется кеш-плагин, сбросьте его вручную;
  • если есть Cloudflare или другой CDN, очистите кеш там тоже;
  • проверьте, не остался ли URL в отдельной XML-карте SEO-плагина.

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

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

Убрали URL из sitemap, но оставили индексируемую страницу

Это частая путаница. Отсутствие в sitemap не равно запрету на индексацию. Если страница должна быть закрыта, проверьте ещё и noindex, canonical или редирект — в зависимости от задачи.

Скрыли не тот тип записей

Если вы отключили целый post type, можно случайно убрать полезные страницы. Перед изменением проверьте, какие шаблоны и URL относятся к этому типу. Особенно это важно для кастомных типов, которые используются и для контента, и для служебных разделов.

Оставили кеш старой карты сайта

После правки sitemap часто продолжает отдавать старый список из кеша. Сначала очищайте кеш плагина, потом серверный кеш, потом CDN. И только после этого проверяйте результат.

Правили тему вместо отдельного слоя

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

Что делать с сервисными страницами, если они уже в индексе

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

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

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

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

  • не храните исключения в теме, если сайт активно развивается;
  • не используйте несколько плагинов, которые одновременно генерируют sitemap;
  • не закрывайте важные URL только через robots.txt, если они уже в индексе;
  • проверяйте права на редактирование файлов, если добавляете mu-plugin вручную;
  • после изменений тестируйте sitemap в режиме инкогнито и без кеша.

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

Как отключить REST API для гостей в WordPress и не сломать админку
30.09.2026
Как использовать метод обновления transient в WordPress для кеширования данных
18.09.2026
Как сделать отложенный запуск функций в WordPress
27.09.2026
Как найти и удалить битые изображения в WordPress
03.10.2026
Как удалить все посты по автору в WordPress: практическое руководство
14.09.2026