Если в XML sitemap попадают страницы, которые не должны индексироваться, поисковик тратит краулинговый бюджет на мусорные URL, а в отчётах начинают всплывать дубли. На WordPress это обычно происходит не из-за одной ошибки, а из-за набора мелочей: включены архивы автора, метки, служебные страницы, дубли пагинации или в sitemap попадают URL с параметрами.
Ниже — рабочий порядок: сначала находим источник дублей, потом убираем их из карты сайта, а в конце проверяем, что sitemap действительно стал чище и не сломал нужные разделы.
Что именно считать дублем в sitemap
Не каждый лишний URL — это ошибка. Например, пагинация архива может быть нужна для обхода, а вот страницы поиска, вложений, тестовые таксономии и дубли с параметрами обычно в sitemap не нужны. Проблема начинается, когда в карту сайта попадают:
- архивы авторов на блоге с одним редактором;
- метки, которые дублируют рубрики по смыслу;
- страницы вложений медиафайлов;
- служебные URL вроде результатов поиска;
- страницы с параметрами, если их добавляет тема или плагин;
- дубли одной и той же сущности в нескольких sitemap-файлах.
Диагностика: где искать источник лишних URL
Сначала откройте сам sitemap и посмотрите, какие типы URL там присутствуют. В WordPress с ядром sitemap это обычно /wp-sitemap.xml. Если используется SEO-плагин, адрес может отличаться. Важно не гадать, а увидеть конкретный источник: посты, страницы, категории, теги, авторы, медиа.
Проверка через браузер и поиск по URL
Откройте sitemap и найдите повторяющиеся шаблоны. Если в списке есть разделы, которые вы не хотите индексировать, значит они либо включены настройками, либо добавляются фильтром темы/плагина.
Проверка через Search Console
Если в отчётах уже есть дубли, сопоставьте их с sitemap. Часто проблема выглядит так: URL есть в карте сайта, но на сайте он закрыт meta robots или canonical указывает на другой адрес. Это не всегда критично, но такой конфликт лучше убрать на уровне генерации sitemap.
Сравнение подходов: плагин, код или настройки SEO-плагина
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует Yoast SEO, Rank Math или аналог | Не все типы URL можно убрать точечно |
| Код в теме или мини-плагине | Если нужен контроль над ядром WordPress sitemap | Нужно аккуратно тестировать после обновлений |
| Комбинация настроек и кода | Если часть дублей идёт из плагина, часть — из ядра | Легко запутаться без списка исключений |
Пошаговое решение для sitemap WordPress
1. Отключите ненужные архивы в настройках
Если у вас SEO-плагин, начните с его интерфейса. Обычно там можно отключить:
- архивы авторов;
- метки;
- форматы записей;
- медиа-страницы;
- служебные таксономии.
Это самый безопасный путь: плагин сам перестроит sitemap и не потребует правок кода.
2. Исключите лишние типы записей из ядра sitemap
Если sitemap генерирует сам WordPress, можно убрать ненужные пост-типы и таксономии через фильтры. Пример ниже отключает sitemap для вложений и скрывает метки из карты сайта, если они вам не нужны.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['attachment'] );
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );
Код лучше добавлять в мини-плагин или в functions.php дочерней темы. Не вставляйте его в родительскую тему: после обновления правка исчезнет.
3. Уберите отдельные URL из sitemap точечно
Если проблема не в типе контента, а в конкретных записях, используйте фильтр для исключения отдельных объектов. Это полезно, когда часть страниц в таксономии нужна, а часть — нет.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'post' === $post_type ) {
$args['post__not_in'] = array( 123, 456 );
}
return $args;
}, 10, 2 );
Здесь 123 и 456 — ID записей, которые не должны попадать в sitemap. Такой способ полезен для дублей, тестовых страниц и старых материалов, которые уже закрыты от индексации.
4. Проверьте, не создаёт ли дубли сам плагин
Иногда проблема не в WordPress, а в SEO-плагине или модуле карты сайта. Например, один плагин может генерировать отдельный sitemap для изображений, а другой — добавлять те же URL в основной список. В этом случае нужно оставить один источник sitemap, а второй отключить.
Как проверить, что решение сработало
После правок не ограничивайтесь визуальной проверкой. Сделайте минимум три шага:
- Откройте sitemap в браузере и убедитесь, что лишние разделы исчезли.
- Проверьте HTTP-ответ URL из sitemap: они должны отдавать 200 для нужных страниц и не появляться для исключённых.
- В Search Console отправьте sitemap на повторную обработку и посмотрите, уменьшилось ли число URL с дублирующимся назначением.
Если вы отключали таксономию или тип записи, проверьте не только главный sitemap, но и дочерние файлы. Иногда основной индекс чистый, а вложенный sitemap по-прежнему содержит старые URL из-за кэша.
Частые ошибки и как их исправить
Отключили URL в sitemap, но они остались в индексе
Это нормально: удаление из sitemap не удаляет страницу из индекса мгновенно. Если URL больше не нужен, он должен отдавать 404 или 410, либо быть закрыт через canonical на канонический адрес. Sitemap здесь только помогает поисковику быстрее понять структуру сайта.
Сломали sitemap после обновления темы
Так бывает, если правки были в functions.php родительской темы. Перенесите код в дочернюю тему или мини-плагин. Это особенно важно для фильтров WordPress, которые должны жить отдельно от дизайна.
Убрали метки, но потеряли полезные страницы
Не стоит отключать все архивы подряд. Если метки реально собирают трафик и имеют уникальный контент, их лучше оставить, но почистить от дублей и слабых страниц. Сначала смотрите на фактическую пользу раздела, потом уже на техническую чистоту.
В sitemap остались URL с параметрами
Это обычно признак того, что их добавляет не ядро WordPress, а тема, фильтр или сторонний плагин. Ищите источник генерации ссылки: шаблон, виджет, блок, кастомный запрос. Убирать такие URL нужно в месте их формирования, а не только на уровне sitemap.
Практические советы по безопасности и производительности
- Не правьте ядро WordPress: после обновления изменения исчезнут.
- Если используете SEO-плагин, не дублируйте его логику собственными фильтрами без необходимости.
- После изменения sitemap очистите кэш страницы, серверный кэш и кэш CDN, если он есть.
- Не отключайте архивы и таксономии только ради «чистого» sitemap, если они реально нужны пользователям и поиску.
- Для теста используйте staging-копию сайта, особенно если sitemap генерируется несколькими плагинами.
Если на сайте много технических дублей, удобно сначала навести порядок в SEO-настройках, а потом уже точечно дорабатывать кодом. В ряде случаев это быстрее сделать через один инструмент, чем собирать исключения вручную. Например, у Clearfy Pro есть набор функций для чистки WordPress и удаления лишних дублей, но использовать его стоит только там, где он действительно закрывает вашу задачу, а не вместо диагностики. Смотрите по конкретному сценарию: Clearfy Pro.
Мини-чек-лист перед публикацией изменений
- Проверен источник sitemap: ядро WordPress или SEO-плагин.
- Список исключаемых типов и URL составлен заранее.
- Код вынесен в дочернюю тему или мини-плагин.
- Кэш очищен после правок.
- Sitemap повторно открыт и проверен вручную.
- В Search Console отправлен запрос на переобход.
Если после всех правок лишние URL всё ещё появляются, значит проблема не в sitemap как таковом, а в генерации контента или в конфликте нескольких плагинов. В этом случае проще идти от конкретного URL к источнику его появления, чем пытаться «почистить всё» одним фильтром.