Если в XML-карте сайта у вас появляются записи, которые не должны попадать в поиск, проблема обычно не в SEO-плагине, а в настройках конкретных типов контента. Чаще всего это служебные CPT, архивы вложений, тестовые таксономии, страницы фильтров или контент, который уже закрыт от индексации, но продолжает засорять sitemap.
Ниже — рабочая схема: как найти источник лишних URL, чем безопасно отключать их из карты сайта и как проверить, что поисковик больше не видит мусорные адреса в XML.
Когда это реально нужно
Отключать URL из sitemap имеет смысл не «на всякий случай», а когда есть понятная причина. Например:
- служебный тип записи доступен только для админки или внутренней логики;
- архивы вложений не несут самостоятельной ценности;
- таксономия создаёт тысячи пустых или дубль-страниц;
- в sitemap попадают URL, которые уже закрыты
noindex, но продолжают расходовать краулинговый бюджет; - в карте сайта есть старые типы записей после миграции темы или плагина.
Важно не путать sitemap и индексацию. Если URL остаётся доступным по прямой ссылке, но вы убрали его из карты сайта, это не равно запрету на обход. Это только сигнал для поисковика, что адрес не нужно активно подсовывать для сканирования.
Диагностика: где именно появляется лишний URL
Сначала нужно понять, кто формирует карту сайта. В WordPress это обычно один из двух сценариев: встроенный XML sitemap ядра или sitemap SEO-плагина. Дальше уже смотрим конкретный источник.
Проверка встроенной карты сайта WordPress
Откройте /wp-sitemap.xml. Если там есть лишний тип записей, значит его добавляет ядро через публичный тип записи или таксономию с включённой поддержкой sitemap.
Для CPT проверьте аргументы регистрации: public, publicly_queryable, show_in_rest и особенно exclude_from_search. Для таксономий — public и show_ui.
Проверка sitemap от SEO-плагина
Если используется плагин вроде Yoast SEO, Rank Math или похожий, карта сайта может быть отдельной. Тогда ищите настройки для конкретного post type, taxonomy или архива. Обычно там можно отключить показ в sitemap без правки кода.
Если интерфейс не даёт нужной точности, проще и надёжнее сделать это кодом через фильтры WordPress.
Пошаговое решение через код
Ниже пример для встроенного XML sitemap WordPress. Он убирает из карты сайта конкретный тип записи и конкретную таксономию. Код лучше добавить в плагин для сайта или в functions.php дочерней темы, если у вас нет отдельного mu-plugin.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
// Убираем служебный тип записи из XML sitemap.
unset( $post_types['internal_note'] );
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
// Убираем ненужную таксономию из XML sitemap.
unset( $taxonomies['content_group'] );
return $taxonomies;
} );
Если нужно убрать только отдельные записи, а не весь тип, используйте фильтр wp_sitemaps_posts_query_args. Это полезно, когда в одном CPT есть и нормальные материалы, и служебные элементы.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'article' !== $post_type ) {
return $args;
}
$args['post__not_in'] = array( 123, 456 );
return $args;
}, 10, 2 );
Этот вариант пригодится, если в sitemap попадает несколько тестовых публикаций, которые нельзя удалять сразу, но и оставлять в карте сайта не нужно.
Если используется SEO-плагин: что настраивать
У SEO-плагинов логика обычно проще: в настройках типа записи или таксономии есть переключатель «показывать в поиске» и отдельная опция для XML sitemap. Если есть оба, не смешивайте их.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Настройка в интерфейсе плагина | Один-два типа контента | Быстро, без кода | Не всегда хватает точности |
| Фильтры WordPress | Нужен контроль по типам и условиям | Предсказуемо, можно версионировать | Нужно аккуратно тестировать |
| Правка регистрации CPT/таксономии | Вы владеете кодом темы или плагина | Решение на уровне архитектуры | Можно сломать совместимость при обновлении |
Если у вас несколько источников sitemap, проверьте, не дублируются ли они. Иногда в индексе остаётся и встроенная карта сайта, и карта от плагина, а поисковик видит обе.
Проверка результата после внедрения
После изменений не ограничивайтесь открытием главной страницы sitemap. Проверьте именно те адреса, которые вы убирали.
- Откройте
/wp-sitemap.xmlили sitemap плагина. - Убедитесь, что нужный тип записи или таксономия больше не отображаются в списке.
- Проверьте прямой URL карты сайта в браузере и через
curl. - Если сайт уже отправлен в Google Search Console, откройте отчёт по файлам Sitemap и посмотрите, не остались ли старые URL в обработке.
Пример проверки через консоль:
curl -I https://example.com/wp-sitemap.xml
curl -s https://example.com/wp-sitemap.xml | grep -n "internal_note"
Если grep ничего не нашёл, это ещё не финальная гарантия, но уже хороший признак. Дальше проверьте конкретный sitemap-файл для типа записи, а не только индекс.
Частые ошибки и как их исправить
Убрали URL из sitemap, но он всё ещё индексируется
Это нормальная ситуация. Sitemap не удаляет страницу из индекса автоматически. Если URL должен исчезнуть из поиска, нужен отдельный план: noindex, редирект, удаление страницы или корректный 410 Gone для реально удалённого контента.
Сломали карту сайта после отключения типа записи
Так бывает, если в фильтре без проверки удалили тип, который нужен плагину или теме. Сначала отключайте только один конкретный ключ массива, а не весь sitemap-слой. И обязательно тестируйте на staging-копии.
Отключили таксономию, но в sitemap остались архивы
Это значит, что архив таксономии генерируется отдельно от списка терминов. Проверьте настройки SEO-плагина и регистрацию таксономии. Иногда нужно не только убрать её из sitemap, но и закрыть архив от индексации.
Путают noindex и удаление из sitemap
Если страница должна быть доступна пользователю, но не нужна в поиске, используйте noindex. Если страница вообще не должна участвовать в обходе, убирайте её из sitemap и дополнительно ограничивайте доступ по логике сайта.
Чек-лист перед публикацией изменений
- Поняли, какой именно sitemap формирует лишний URL.
- Проверили, это встроенный sitemap WordPress или карта SEO-плагина.
- Убрали только нужный тип записи, таксономию или отдельные записи.
- Проверили sitemap через браузер и
curl. - Убедились, что не сломались другие карты сайта.
- Проверили, нужен ли для этих URL ещё и
noindexили редирект.
Практические советы по безопасности и производительности
Если правите sitemap кодом, не вносите изменения напрямую в родительскую тему. После обновления они пропадут. Для таких задач лучше использовать дочернюю тему или небольшой mu-plugin.
Если сайт большой, не пытайтесь «чистить» sitemap регулярными запросами к базе на каждом хите. Фильтры WordPress должны работать быстро и предсказуемо. Чем меньше логики в рантайме, тем меньше шансов получить лишнюю нагрузку на генерацию карты сайта.
Для сайтов с большим количеством служебного контента иногда удобнее сначала привести в порядок регистрацию CPT и таксономий, а уже потом настраивать sitemap. Это чище, чем маскировать архитектурную проблему фильтрами.
Если нужен более широкий аудит технического SEO и чистки дублей, в экосистеме WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие именно URL вы убираете и почему.