Когда в XML sitemap попадают служебные страницы, тестовые записи, архивы с дублями или старые URL, поисковик тратит краулинговый бюджет не туда. В WordPress это обычно решается либо настройками SEO-плагина, либо фильтрами в коде, либо комбинацией обоих способов. Ниже — рабочие варианты без лишней теории.
Когда sitemap нужно чистить
Проблема не в самом наличии sitemap, а в том, что в него часто попадает контент, который не должен участвовать в обходе: страницы с параметрами, черновые разделы, служебные таксономии, вложения медиафайлов, дубли архивов автора или дат. Если такие URL уже закрыты от индексации, но продолжают светиться в карте сайта, это сигнал, что настройки расходятся между собой.
Типичные симптомы
- в Search Console появляются URL из sitemap, которые вы не хотите индексировать;
- в отчётах по покрытию есть страницы со статусом
Excluded by 'noindex', но они всё равно присутствуют в карте сайта; - в sitemap видны старые записи после удаления плагина или смены структуры сайта;
- в карту сайта попадают вложения изображений, хотя они не нужны как отдельные страницы.
Диагностика: где именно появляется лишний URL
Сначала проверьте, кто формирует sitemap. В WordPress это может быть встроенная карта сайта ядра, Yoast SEO, Rank Math, All in One SEO или другой плагин. Подход к исключению зависит от источника, поэтому не стоит сразу править код темы.
Откройте карту сайта в браузере и найдите конкретный URL. Если он там есть, проверьте три вещи: тип контента, его статус в SEO-плагине и нет ли фильтра, который добавляет его обратно через код. Иногда URL исключён из индексации, но всё ещё включён в sitemap, потому что эти настройки живут отдельно.
Что проверить перед правкой
- какой плагин генерирует sitemap;
- не отключена ли карта сайта в нескольких местах одновременно;
- нет ли кастомного кода в
functions.phpили mu-plugin; - не является ли URL вложением, архивом или таксономией;
- не создаёт ли его отдельный плагин, например для документации, каталога или блога.
Способ 1: исключить URL через SEO-плагин
Если sitemap генерирует SEO-плагин, самый безопасный путь — убрать ненужный тип контента в его настройках. Это лучше, чем править XML вручную: после обновления плагина изменения не слетят.
Например, в большинстве SEO-плагинов можно отключить отдельные типы записей, таксономии или архивы. Если нужно убрать только одну страницу, удобнее сначала поставить ей noindex и затем исключить из sitemap на уровне типа контента, если плагин это позволяет.
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Нужно убрать целый тип контента или архив | Не всегда можно исключить один URL точечно |
| Код через фильтр | Нужно убрать конкретные записи или вложения | Требует аккуратной проверки после обновлений |
| Ручное редактирование XML | Почти никогда не нужно | Сломается при следующей генерации |
Способ 2: исключить конкретные записи через код
Если карта сайта строится ядром WordPress или вам нужно убрать несколько конкретных записей, используйте фильтр wp_sitemaps_posts_query_args. Он позволяет исключить записи по ID на уровне запроса, который формирует sitemap.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'post' !== $post_type ) {
return $args;
}
$exclude_ids = array( 12, 34, 56 );
if ( empty( $args['post__not_in'] ) ) {
$args['post__not_in'] = array();
}
$args['post__not_in'] = array_merge( $args['post__not_in'], $exclude_ids );
return $args;
}, 10, 2 );Этот вариант полезен, если у вас есть служебные статьи, тестовые страницы или записи, которые не должны попадать в sitemap, но удалять их из базы вы не хотите. Код лучше размещать в небольшом mu-plugin или в отдельном плагине проекта, а не в теме.
Если нужно убрать вложения из sitemap
Встроенная карта сайта WordPress может включать медиа-вложения как отдельный тип. Если это не нужно, проще отключить их на уровне генерации. Для ядра WordPress можно использовать фильтр wp_sitemaps_post_types и убрать тип attachment.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['attachment'] );
return $post_types;
} );Это не удаляет сами файлы и не влияет на загрузку изображений в контенте. Оно лишь убирает отдельный sitemap для вложений, который часто не нужен на обычном сайте.
Пошаговое решение без лишнего риска
- Определите, какой плагин или механизм создаёт sitemap.
- Составьте список URL, которые нужно убрать: один адрес, тип записей, архив или вложения.
- Сначала попробуйте штатные настройки SEO-плагина.
- Если штатных настроек недостаточно, добавьте фильтр в mu-plugin или мини-плагин.
- После правки очистите кэш сайта и, если есть, кэш CDN.
- Проверьте XML sitemap в браузере и в Search Console.
Если вы используете Clearfy Pro, его удобно подключать как инструмент для технической чистки сайта и работы с дублями, но сам принцип остаётся тем же: сначала понять источник sitemap, потом уже отключать лишнее. Ссылка на продукт: Clearfy Pro.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте sitemap по адресу, который использует ваш сайт, и убедитесь, что нужный URL исчез. Затем проверьте исходный код страницы sitemap или конкретного sitemap-файла: там не должно быть старой ссылки.
Дальше откройте Google Search Console и отправьте sitemap на повторную обработку, если это уместно для вашего проекта. Не ждите мгновенного пересчёта: поисковик может обновлять данные не сразу, но вы хотя бы исключите проблему на стороне сайта.
Мини-чек-лист проверки
- URL отсутствует в XML sitemap;
- страница не возвращается в sitemap после очистки кэша;
- нет конфликта между noindex и картой сайта;
- в Search Console отправлен актуальный sitemap;
- если использовался код, он лежит не в теме, а в отдельном месте, которое не потеряется при обновлении.
Частые ошибки и как их исправить
Отключили страницу от индексации, но не убрали из sitemap
Это самая частая ситуация. noindex и sitemap решают разные задачи. Если URL не должен участвовать в обходе, убирайте его и из карты сайта, и из индексации, если это действительно нужно по логике проекта.
Правят XML вручную
Так делать не стоит: карта сайта генерируется заново, и ручные изменения исчезнут. Исключение — временная диагностика, но не постоянное решение.
Добавили код в тему
После обновления темы фильтр может пропасть. Для технических правок лучше использовать mu-plugin или отдельный мини-плагин проекта.
Не очистили кэш
Если сайт использует серверный кэш, плагин кэширования или CDN, старая версия sitemap может показываться ещё какое-то время. После изменений кэш нужно сбросить вручную.
Безопасность и производительность
Не перегружайте sitemap лишними типами контента. Чем меньше в нём мусора, тем проще поисковику обходить сайт и тем меньше шанс, что вы сами забудете про служебный URL. Но не удаляйте из карты сайта важные страницы только потому, что они кажутся «второстепенными» — если страница должна индексироваться и приносить трафик, она должна оставаться в sitemap.
Если на сайте много технических правок, держите их в одном месте: отдельный mu-plugin, репозиторий или хотя бы файл с комментариями. Это снижает риск случайно потерять фильтр после обновления темы или плагина.
Для сайтов, где кроме sitemap нужно ещё чистить дубли, архивы и служебные элементы, имеет смысл использовать один инструмент для технической оптимизации, а не собирать решение из нескольких конфликтующих плагинов. Но даже в этом случае проверка после внедрения остаётся обязательной: карта сайта меняется не только от настроек, но и от структуры контента.