Если в XML sitemap попадают страницы, которые не должны индексироваться, поисковик получает лишние сигналы: канонические URL смешиваются с дублями, а обход тратится на мусорные адреса. На небольшом сайте это часто незаметно, но на проекте с фильтрами, архивами, тегами, пагинацией и техническими страницами sitemap быстро начинает раздуваться.
Задача здесь не в том, чтобы «сделать карту меньше», а в том, чтобы оставить в ней только те URL, которые реально должны участвовать в индексации. Ниже — рабочая схема: как диагностировать проблему, чем можно управлять через настройки плагина или код, и как проверить, что изменения сработали.
Когда sitemap начинает вредить
Проблема обычно проявляется не в одном месте. В Search Console могут появляться URL с параметрами, архивы, страницы автора, пагинация, вложения медиафайлов или служебные страницы темы и плагинов. Иногда они уже закрыты через noindex, но по-прежнему остаются в sitemap, и это создает конфликт сигналов.
Что проверить в первую очередь
- есть ли в sitemap URL с параметрами, например
?orderby=или?filter=; - попадают ли туда архивы тегов, авторов, дат;
- есть ли в карте вложения медиафайлов, если они не используются как отдельные страницы;
- не дублируются ли записи через несколько типов архивов;
- совпадает ли список URL в sitemap с тем, что вы реально хотите индексировать.
Если у вас уже настроены правила закрытия дублей в robots.txt и noindex, но sitemap продолжает отдавать эти адреса, поисковик получает противоречивую картину. В таких случаях лучше не «дожимать» robots.txt, а убрать URL из самой карты сайта.
Диагностика: где именно появляются лишние URL
Сначала откройте XML sitemap и посмотрите, какой плагин его генерирует. В WordPress это может быть встроенная карта сайта, Yoast SEO, Rank Math, Clearfy Pro или другой SEO-плагин. Важно понять, кто именно формирует список, потому что у каждого решения свой способ исключения URL.
Дальше проверьте три источника:
- сам sitemap в браузере;
- исходный код страниц архива и записей на наличие
noindexи canonical; - отчет в Google Search Console по страницам, которые обнаружены, но не должны индексироваться.
Если URL есть в sitemap, но закрыт от индексации, это уже повод исправлять генерацию карты, а не только мета-теги. Sitemap должен быть списком разрешенных к индексации страниц, а не свалкой всех доступных URL.
Пошаговое решение без лишнего риска
Есть три рабочих подхода: настройки плагина, фильтры WordPress и ручная логика в теме или мини-плагине. Выбор зависит от того, насколько сложная у вас структура сайта.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Настройки SEO-плагина | Нужно убрать архивы, таксономии, вложения | Быстро, без кода | Не всегда хватает для точечных правил |
| Фильтры WordPress | Нужно исключить отдельные записи, страницы или типы | Гибко и прозрачно | Требует аккуратности в коде |
| Комбинация настроек и кода | Сайт с фильтрами, AI-страницами, служебными разделами | Лучший контроль | Нужно тестировать после каждого изменения |
1. Уберите лишние типы контента в настройках SEO-плагина
Если sitemap генерирует SEO-плагин, сначала проверьте его интерфейс. Обычно там можно отключить архивы тегов, авторов, дат, вложения и отдельные типы записей. Это самый безопасный путь, если проблема массовая.
Например, если у вас есть служебные страницы или AI-страницы, которые вы пока не хотите индексировать, логичнее не включать их в карту до момента публикации. Для этого удобно использовать WPGPT: он помогает генерировать контент, а вы уже на уровне публикации решаете, попадет ли страница в sitemap и индекс. Такой контроль особенно полезен, когда контент создается пачками и часть материалов еще проходит редактуру.
2. Исключите отдельные URL через фильтр wp_sitemaps_posts_query_args
Если встроенная карта сайта WordPress или ваш кодовый слой тянет лишние записи, можно отфильтровать запрос к постам. Это подходит, когда нужно убрать конкретные 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, убедитесь, что они действительно не должны индексироваться. Иначе вы просто спрячете проблему, а не решите ее.
3. Отфильтруйте таксономии через wp_sitemaps_taxonomies
Для тегов, рубрик и других таксономий удобнее работать на уровне списка доступных карт. Например, если теги на сайте создают много пустых или почти пустых страниц, их можно убрать из sitemap, а затем отдельно решить вопрос с noindex или canonical.
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );Такой подход не ломает саму таксономию в админке и не удаляет архивы физически. Он только исключает их из XML sitemap.
4. Если нужен точечный контроль, используйте мини-плагин
Когда правки должны пережить смену темы, лучше вынести их в мини-плагин, а не в functions.php. Это особенно важно для сайтов, где sitemap и индексация — часть регулярной технической поддержки.
<?php
/**
* Plugin Name: Sitemap Cleanup
*/
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'page' === $post_type ) {
$args['post__not_in'] = array( 789 );
}
return $args;
}, 10, 2 );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );Если у вас не встроенный sitemap WordPress, а карта от SEO-плагина, сначала ищите штатные настройки. Код нужен только тогда, когда интерфейса недостаточно.
Как проверить, что лишние URL действительно исчезли
После правок не ограничивайтесь визуальной проверкой в браузере. Откройте sitemap по прямому URL и убедитесь, что проблемных адресов там больше нет. Затем проверьте исходный код нескольких страниц, которые вы исключали: они должны либо исчезнуть из карты, либо остаться в ней только если это осознанно разрешенные URL.
Дальше полезно сделать короткий чек-лист:
- в sitemap нет URL с параметрами;
- архивы, которые не должны индексироваться, отсутствуют в карте;
- страницы с
noindexне дублируются в sitemap без необходимости; - в Search Console новые ошибки по этим URL не появляются;
- после переобхода робот видит только нужные разделы.
Если сайт большой, изменения могут не отразиться мгновенно в отчетах. Но сам XML sitemap должен обновиться сразу после очистки кэша и пересборки карты.
Частые ошибки и как их исправить
Отключили URL в sitemap, но оставили их открытыми для индексации
Это частая путаница. Sitemap и индексирование — разные вещи. Если страница не нужна в поиске, одного исключения из карты недостаточно. Проверьте noindex, canonical и внутренние ссылки.
Закрыли страницу в robots.txt, но она все еще в sitemap
Так делать можно только в редких случаях, но для технической чистки это плохая комбинация. Поисковик может видеть URL в карте, но не сможет нормально его переобойти. Лучше сначала убрать из sitemap, затем при необходимости закрыть от индексации.
Сломали карту сайта после жесткого фильтра
Иногда разработчики слишком агрессивно чистят запросы и случайно убирают нужные записи. Если после правки sitemap стал пустым или почти пустым, проверьте условия в фильтре и типы контента. Ошибка часто в том, что фильтр применяется ко всем типам, а не к одному конкретному.
Правки внесли в тему, а потом потеряли их после обновления
Для технических правил, связанных с sitemap, лучше использовать мини-плагин или mu-plugin. Это надежнее, чем править тему, особенно если проект живет долго и обновляется регулярно.
Что делать на сайтах с AI-контентом и массовой генерацией
Если вы публикуете материалы через WPGPT или другой инструмент генерации контента, у вас может быть отдельный поток страниц, которые сначала проходят проверку, а потом становятся публичными. В этом сценарии sitemap особенно важен: не стоит добавлять в карту черновики, тестовые записи, промежуточные версии и служебные страницы.
Практика простая: сначала публикуете материал в закрытом или временно исключенном состоянии, проверяете структуру, внутренние ссылки и мета-теги, а затем включаете страницу в индексацию и sitemap. Это снижает риск того, что поисковик увидит сырой контент или его дубли.
Безопасность и производительность
Любые правки sitemap лучше делать через отдельный слой кода, а не в случайных местах темы. Это уменьшает риск конфликтов при обновлениях. Если сайт использует кэш, после изменений обязательно очистите кэш страницы sitemap и, если нужно, объектный кэш.
Еще один практический момент: не пытайтесь решать проблему только через массовое удаление URL из базы. Для sitemap достаточно управлять тем, что и как попадает в карту. Это быстрее, безопаснее и проще откатывается.
Если вам нужен более широкий контроль над технической чисткой WordPress, удобно смотреть в сторону инструментов вроде Clearfy Pro: он закрывает часть типовых SEO-задач, где нужно убрать лишнее и не трогать рабочую структуру сайта. Но даже с таким плагином логику sitemap все равно стоит проверять вручную на реальных URL.
В итоге рабочая схема всегда одна: сначала находите источник дублей, потом убираете их из sitemap, затем проверяете индексацию и только после этого считаете задачу закрытой. Если пропустить любой из этих шагов, лишние URL обычно возвращаются через следующий обход.