Если в XML sitemap попадают служебные страницы, дубли архивов или URL с параметрами, поисковик тратит краулинговый бюджет не туда. На небольшом сайте это обычно не критично, но на контентном проекте с фильтрами, архивами и плагинами SEO такие ошибки быстро превращаются в лишние обходы и шум в отчётах.
Задача здесь не в том, чтобы «выключить sitemap», а в том, чтобы оставить в нём только те URL, которые реально должны индексироваться. В WordPress это можно сделать через настройки SEO-плагина, фильтры ядра или точечные исключения в коде темы/плагина.
Когда проблема действительно есть
Сначала стоит убедиться, что вы боретесь именно с дублями в sitemap, а не с нормальными страницами. Типичный сценарий: в карте сайта видны архивы автора, теги без контента, страницы пагинации, вложения медиафайлов или технические URL, которые не должны попадать в поиск.
Что проверить в первую очередь
- откройте XML sitemap в браузере и посмотрите, какие типы URL туда попадают;
- сравните sitemap с реальными страницами в индексе через Google Search Console;
- проверьте, не генерирует ли SEO-плагин отдельные карты для таксономий, медиа и архивов;
- посмотрите, нет ли в sitemap URL с параметрами, если их добавляет тема или кастомный код;
- убедитесь, что в sitemap не попали страницы, закрытые от индексации через
noindex.
Если в карте сайта есть URL с noindex, это не всегда ошибка, но обычно это признак несогласованной настройки: одна часть сайта говорит поисковику «не индексируй», а другая — «вот этот URL важен». Лучше привести логику к одному правилу.
Какие URL обычно нужно исключать
Набор зависит от структуры сайта, но чаще всего из sitemap убирают страницы, которые не несут самостоятельной ценности для поиска. Это не универсальный список, а рабочая отправная точка для аудита.
| Тип URL | Оставлять в sitemap | Комментарий |
|---|---|---|
| Записи и страницы | Да | Если контент уникальный и открыт к индексации |
| Архивы автора | Обычно нет | Особенно если автор один и архив дублирует блог |
| Теги | Зависит | Оставляйте только если теги реально ведут трафик и заполнены |
| Медиа-вложения | Чаще нет | Обычно это тонкие страницы без пользы |
| Пагинация архивов | Обычно нет | Если это не отдельная стратегия индексации |
| Служебные страницы | Нет | Поиск, корзина, личный кабинет, thank you page |
Как убрать дубли через SEO-плагин
Если у вас уже стоит SEO-плагин, это самый безопасный путь. В большинстве случаев лучше не писать собственную логику, а использовать штатные настройки: они переживают обновления и меньше ломаются при смене темы.
Что искать в настройках
В популярных SEO-плагинах обычно можно отключить отдельные типы архивов, таксономии и медиа-страницы из карты сайта. Ищите разделы, связанные с XML sitemap, индексированием архивов и настройками таксономий. Логика простая: если страница не должна индексироваться, она не должна и попадать в sitemap.
Если плагин умеет управлять индексированием архивов, сначала отключите их там, а уже потом проверьте карту сайта. Не стоит править sitemap вручную, если источник дублей — глобальная настройка таксономии.
Для комплексной чистки сайта и удаления дублей иногда удобнее использовать Clearfy Pro, если он уже есть в стеке. Но даже в этом случае важно не полагаться на один чекбокс: сначала определите, что именно попадает в sitemap лишним.
Точечное исключение через код
Когда SEO-плагин не даёт нужной гибкости, можно исключить конкретные типы записей или таксономий через фильтры WordPress. Это полезно, если проблема локальная: например, нужно убрать только вложения или только один кастомный тип записи.
Исключить вложения из sitemap
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );Этот вариант работает с нативным sitemap WordPress. Если у вас sitemap генерирует SEO-плагин, его фильтры будут другими, и править нужно именно их, а не ядро.
Убрать конкретную таксономию
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
$exclude = array( 'post_tag' );
foreach ( $exclude as $taxonomy ) {
if ( isset( $taxonomies[ $taxonomy ] ) ) {
unset( $taxonomies[ $taxonomy ] );
}
}
return $taxonomies;
} );Такой подход удобен, если теги на сайте не несут самостоятельной ценности. Но если теги уже ранжируются и дают трафик, сначала проверьте их в Search Console и только потом исключайте.
Отключить конкретный тип записей
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
$exclude = array( 'product', 'portfolio' );
foreach ( $exclude as $post_type ) {
if ( isset( $post_types[ $post_type ] ) ) {
unset( $post_types[ $post_type ] );
}
}
return $post_types;
} );Этот код уместен, если кастомный тип записи существует только для внутренней структуры сайта или дублирует основной контент. Если тип записи нужен для пользователей, но не для поиска, дополнительно проверьте мета-теги noindex и каноникал.
Пошаговое решение без лишнего риска
- Составьте список URL, которые попали в sitemap ошибочно.
- Определите источник: ядро WordPress, SEO-плагин, тема или кастомный код.
- Отключите лишнее в настройках плагина, если это возможно.
- Если настройки не хватает, добавьте точечный фильтр в дочернюю тему или мини-плагин.
- Проверьте, что исключённые URL исчезли именно из sitemap, а не только из меню или шаблона.
- Отправьте sitemap на повторную проверку в Search Console после обновления.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте XML sitemap и убедитесь, что нужные URL больше не присутствуют в списке. Затем проверьте несколько исключённых страниц вручную: они должны либо не попадать в sitemap, либо иметь согласованную настройку индексации.
Дальше смотрите Search Console. Если проблема была массовой, изменения не будут мгновенными, но новые обходы уже должны идти по очищенной карте сайта. Для проверки можно:
- сравнить старую и новую версию sitemap;
- проверить статус URL в инспекторе;
- посмотреть, не появились ли ошибки в отчёте по страницам;
- убедиться, что в sitemap остались только канонические адреса без параметров.
Если сайт кэшируется, не забудьте очистить кэш плагина, сервера и CDN. Иначе вы можете смотреть на старую версию sitemap и делать ложные выводы.
Частые ошибки и как их исправить
Отключили не тот тип URL
Иногда убирают из sitemap целый тип записей, хотя проблема была только в одной таксономии или в медиа-вложениях. Исправление простое: верните тип обратно и исключите только конкретный источник дубля.
Правят sitemap вручную, а он генерируется заново
Если файл создаёт WordPress или SEO-плагин, ручная правка бессмысленна: при следующем обновлении всё вернётся. Нужно менять фильтр, настройку плагина или шаблон генерации.
Смешивают noindex и sitemap без логики
Страница может быть закрыта от индексации, но всё ещё попадать в sitemap. Это не всегда критично, но лучше не держать такие URL в карте сайта без причины. Если страница не нужна в поиске, исключите её и из sitemap, и из индексации.
Не учитывают кастомные плагины и темы
Некоторые темы и плагины добавляют свои публичные архивы или страницы фильтров. Если они не видны в стандартных настройках SEO-плагина, ищите их в фильтрах WordPress или в документации конкретного расширения.
Что делать, если sitemap генерирует не WordPress, а SEO-плагин
Это нормальная ситуация. Тогда фильтры ядра могут не помочь, и нужно работать с настройками самого плагина. Сначала найдите, какой именно плагин отвечает за sitemap, и проверьте его документацию по исключению типов записей, таксономий и отдельных URL.
Если у вас уже есть плагин для технической чистки сайта, например Clearfy Pro, его удобно использовать как слой для отключения дублей и служебных страниц, но не как замену понимания структуры индексации. Сначала логика, потом инструмент.
Практика безопасности и производительности
Не вставляйте код прямо в файл functions.php основной темы, если сайт живой и обновляется. Лучше использовать дочернюю тему или небольшой mu-plugin. Так вы не потеряете изменения после обновления и не сломаете сайт из-за случайной правки.
Если sitemap большой, после изменений проверьте нагрузку на генерацию и кэширование. На сайтах с большим числом записей лучше не пересобирать карту сайта на каждом запросе без необходимости. И не забывайте, что любые правки в индексации нужно делать вместе с каноникалами, редиректами и мета-тегами: иначе вы просто перенесёте проблему из sitemap в другой слой.
Когда карта сайта очищена, поисковику проще понять структуру сайта, а вам — проще контролировать, что именно вы отдаёте в индекс. Это как раз тот случай, где точечная настройка полезнее, чем попытка «починить SEO» одной кнопкой.