Ситуация типичная: сайт уже живёт, а в XML sitemap внезапно попадают страницы, которые вы не хотите отдавать поисковикам. Это могут быть архивы, служебные шаблоны, страницы с параметрами, вложения медиа или отдельные CPT, которые не должны индексироваться. Если просто закрыть их через noindex, но оставить в sitemap, поисковый робот всё равно будет регулярно их обходить и тратить краулинговый бюджет.
Ниже — практический разбор, как убрать лишние URL из sitemap в WordPress, чем отличается настройка через код и плагины, и как проверить, что изменения действительно сработали.
Когда проблема видна не сразу
Обычно тревожные сигналы такие:
- в
/wp-sitemap.xmlили sitemap от SEO-плагина есть URL, которые не должны индексироваться; - в Google Search Console растёт число обнаруженных, но не проиндексированных страниц;
- в отчёте по обходу видны служебные URL, архивы и страницы с параметрами;
- после закрытия раздела от индексации он всё равно продолжает появляться в карте сайта.
Важно не путать индексацию и наличие в sitemap. Sitemap — это подсказка для робота, а не гарантия индексации. Но если в карте сайта лежит мусор, вы сами подталкиваете поисковик к обходу лишних страниц.
Что именно нужно убрать из sitemap
Перед правкой стоит зафиксировать список объектов. Обычно это один из таких вариантов:
- отдельный тип записи, например
portfolioилиevent; - таксономия, которая дублирует контент;
- архивы авторов, дат или вложений;
- страницы с техническими параметрами;
- черновые разделы, которые пока не готовы к индексации.
Если вы не уверены, сначала проверьте, кто именно генерирует sitemap: ядро WordPress или SEO-плагин. У них разные точки управления.
Диагностика: кто отдаёт sitemap и где его править
Проверяем источник карты сайта
Откройте в браузере /wp-sitemap.xml. Если там стандартная структура WordPress, значит работает ядро. Если карта сайта выглядит иначе, с дополнительными индексами и правилами, её, скорее всего, формирует SEO-плагин.
Дальше проверьте, есть ли в теме или плагинах фильтры, которые уже меняют поведение sitemap. Часто проблема не в WordPress, а в том, что один плагин добавляет URL, а другой пытается их скрыть только через noindex.
Быстрая проверка через исходный XML
Если карта сайта доступна по URL, откройте её исходник и найдите нужный тип страниц. Это можно сделать даже без доступа к панели:
curl -s https://example.com/wp-sitemap.xml | grep -i "portfolio"Если нужный раздел есть в sitemap, а вы хотите его убрать, дальше уже имеет смысл править генерацию, а не мета-теги на самих страницах.
Решение через код: исключаем типы записей и таксономии из sitemap WordPress
В ядре WordPress для этого есть фильтры. Самый полезный — wp_sitemaps_post_types для типов записей и wp_sitemaps_taxonomies для таксономий. Их удобно использовать в дочерней теме или в небольшом функциональном плагине.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['portfolio'] );
unset( $post_types['event'] );
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
unset( $taxonomies['product_cat'] );
return $taxonomies;
} );Этот вариант подходит, если вам нужно убрать целый тип контента из sitemap. Он не отключает сам контент и не влияет на доступность страниц по прямой ссылке — только на карту сайта.
Если нужно убрать только отдельные записи
Иногда тип записи нужен в sitemap, но несколько конкретных URL — нет. Тогда используйте фильтр wp_sitemaps_posts_query_args и исключайте записи по ID или по метаполю, если у вас есть признак технической публикации.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'post' !== $post_type ) {
return $args;
}
$args['post__not_in'] = array( 123, 456 );
return $args;
}, 10, 2 );Это полезно, когда в sitemap попадают тестовые материалы, служебные страницы или записи, которые уже закрыты от индексации, но ещё не удалены.
Решение через SEO-плагин: когда код не нужен
Если у вас уже стоит SEO-плагин, часто проще отключить нужные разделы в его настройках. Это особенно удобно, когда контентом управляет редакция и не хочется держать логику в коде темы.
| Подход | Когда подходит | Компромисс |
|---|---|---|
| Код через фильтры WordPress | Нужна точная логика и контроль версий | Требует доступа к коду и тестирования после обновлений |
| Настройки SEO-плагина | Нужно быстро убрать разделы без разработки | Зависит от интерфейса и возможностей конкретного плагина |
Оставить как есть и поставить noindex | Редкий случай, когда URL должен быть доступен, но не индексироваться | Лишние URL всё равно остаются в sitemap и обходятся роботом |
Если вы используете Clearfy Pro, часть таких задач можно закрыть через его инструменты для удаления дублей и технической чистки сайта: https://wpshop.ru/plugins/clearfy. Но даже в этом случае полезно понимать, что именно отключается и на каком уровне.
Пошагово: безопасная схема внедрения
- Сделайте резервную копию файлов и базы.
- Определите, кто генерирует sitemap: ядро WordPress или SEO-плагин.
- Составьте список URL, которые нужно убрать.
- Добавьте фильтр в дочернюю тему или мини-плагин.
- Очистите кэш сайта и CDN, если они есть.
- Проверьте sitemap в браузере и через Search Console.
Если вы меняете код в теме, не вносите правки в основной шаблон. После обновления они затрутся. Для точечных SEO-правок безопаснее использовать дочернюю тему или отдельный mu-plugin.
Как проверить, что всё сработало
Проверка должна быть не на глаз, а по факту:
- откройте
/wp-sitemap.xmlи убедитесь, что нужного раздела больше нет; - проверьте конкретный URL через
curlили браузерный поиск по XML; - посмотрите, не остались ли старые версии sitemap в кэше;
- в Search Console отправьте карту сайта на повторную обработку;
- через несколько дней проверьте, уменьшилось ли число лишних URL в отчётах об обходе.
Если URL всё ещё видны, чаще всего причина одна из трёх: кэш, конфликт плагинов или вы отключили не тот источник sitemap.
Частые ошибки и как их исправить
Отключили страницу от индексации, но не убрали из sitemap
Это самая частая ошибка. noindex не убирает URL из карты сайта. Если цель — не показывать страницу поисковику вообще, убирайте её из sitemap на уровне генерации.
Правят не тот sitemap
В WordPress может одновременно работать ядро и SEO-плагин. Если вы меняете фильтры ядра, а sitemap отдаёт плагин, эффекта не будет. Сначала убедитесь, какой именно XML открыт в браузере.
Не очищают кэш
После правки карта сайта может оставаться старой на уровне плагина кэша, сервера или CDN. Если проверка показывает старый XML, сначала чистите кэш, потом уже ищите баг в коде.
Удаляют URL из sitemap, но не закрывают доступ к ним
Это не всегда ошибка, но важно понимать последствия. Если страница должна быть недоступна, одного исключения из sitemap мало. Тогда нужен отдельный сценарий: редирект, 404/410 или ограничение доступа.
Безопасность и производительность
Чем меньше мусора в sitemap, тем меньше лишней работы у роботов и у вашего сервера. На крупных сайтах это особенно заметно, если в карту сайта попадают архивы, фильтры и служебные страницы. Но не стоит отключать всё подряд: сначала проверьте, не нужен ли этот URL для внутренней перелинковки или для внешнего трафика.
Если sitemap генерируется тяжело, а сайт большой, имеет смысл проверить кэширование, количество записей в индексах sitemap и конфликтующие плагины. Иногда проблема не в самом XML, а в том, что его пересборка слишком часто нагружает сайт.
Для сайтов, где техническая чистка и SEO-настройки нужны регулярно, удобнее держать под рукой один инструмент, чем собирать всё из разрозненных плагинов. Но даже тогда базовая логика фильтров WordPress остаётся полезной: она помогает быстро понять, где именно ломается карта сайта и почему поисковик видит лишнее.