Ситуация типичная: сайт уже в индексе, sitemap работает, но туда внезапно попадают страницы, которые не должны светиться поисковикам — тестовые записи, служебные страницы, приватные разделы, архивы с пустым содержимым или URL, которые вы закрыли от индексации только на уровне шаблона. Если просто удалить ссылку из меню, это ничего не меняет: XML sitemap продолжит отдавать адреса, а поисковый робот будет их регулярно обходить.
Ниже разберём, как понять источник лишних URL, как убрать их из sitemap корректно и как проверить, что после правки карта сайта действительно стала чище.
Когда проблема не в robots.txt, а именно в sitemap
Частая ошибка — пытаться решить всё через robots.txt. Это полезно для ограничения обхода, но не убирает URL из самой XML-карты сайта. Если страница уже попала в sitemap, поисковик увидит её как потенциально важную, даже если позже вы поставите ей noindex.
Проверять нужно не догадками, а по факту:
- откройте
/wp-sitemap.xmlили sitemap, который отдаёт SEO-плагин; - найдите лишний URL в нужном разделе — записи, страницы, авторы, таксономии, медиа;
- проверьте, не создаёт ли его плагин, кастомный тип записи или отдельный шаблон;
- посмотрите, не является ли это URL с
publicly_queryableилиexclude_from_search, но всё ещё доступным для sitemap.
Что обычно попадает в карту сайта по ошибке
На практике это чаще всего:
- служебные страницы с техническим контентом;
- черновики, которые случайно стали публичными;
- посты кастомного типа, которые не должны индексироваться;
- архивы таксономий без полезного контента;
- страницы авторов на сайтах, где авторский архив не нужен;
- медиа-страницы вложений, если они не используются как отдельные посадочные.
Сначала диагностика: кто именно генерирует sitemap
В WordPress sitemap может генерировать ядро или SEO-плагин. От этого зависит способ исправления. Если вы используете Yoast, Rank Math, All in One SEO или другой SEO-плагин, у него обычно есть собственные настройки исключения. Если карта сайта штатная, придётся работать через фильтры WordPress.
Быстрый способ понять источник:
- Откройте
/wp-sitemap.xml. - Если видите стандартную структуру WordPress — это ядро.
- Если sitemap имеет собственный формат, вероятно, его отдаёт SEO-плагин.
- Проверьте исходный код страницы sitemap: иногда там есть явные следы плагина или namespace.
Если у вас несколько SEO-расширений одновременно, не исключено, что одно из них генерирует sitemap, а другое только добавляет мета-теги. В таком случае править нужно именно тот инструмент, который отвечает за карту сайта.
Пошаговое решение для штатного XML sitemap WordPress
У ядра WordPress есть фильтры для исключения объектов из sitemap. Это самый чистый путь, если вы хотите убрать конкретный тип записей, таксономию или отдельный объект без вмешательства в шаблоны.
1. Исключить отдельный тип записей
Если приватные страницы создаются как отдельный post type, можно убрать его из sitemap целиком. Добавьте код в functions.php дочерней темы или в небольшой mu-plugin.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['private_note'] );
return $post_types;
} );Здесь private_note — пример slug кастомного типа записи. Подставьте свой реальный идентификатор. После этого весь тип исчезнет из sitemap, но останется доступным на сайте, если вы отдельно не закроете его от индексации.
2. Убрать конкретные записи по ID
Если нужно скрыть только несколько страниц, используйте фильтр wp_sitemaps_posts_query_args. Это удобно, когда в sitemap попали тестовые или внутренние материалы, но сам тип записи должен остаться.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'page' === $post_type ) {
$args['post__not_in'] = array( 123, 456 );
}
return $args;
}, 10, 2 );Такой подход безопаснее ручного удаления URL из базы: вы не трогаете контент, а только исключаете его из генерации карты сайта.
3. Исключить таксономию или архив
Если проблема в рубриках, метках или другой таксономии, можно убрать её из sitemap через фильтр wp_sitemaps_taxonomies.
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );Это разумно, если теги на сайте технические и не несут самостоятельной ценности для поиска. Но если теги у вас реально ранжируются, не спешите отключать их без анализа.
Если sitemap отдаёт SEO-плагин: где искать настройку
У SEO-плагинов логика обычно проще: у поста, страницы, таксономии или типа записи есть переключатель show in search results, noindex или отдельная опция исключения из XML sitemap. Названия отличаются, но смысл один — объект не должен попадать в карту сайта, если он не предназначен для поиска.
Практически всегда стоит проверить:
- настройки типа записи в SEO-плагине;
- метабокс на экране редактирования записи;
- глобальные настройки sitemap;
- исключения для архивов, авторов, медиа и таксономий.
Если плагин позволяет исключать URL по шаблону или по типу контента, это лучше, чем править вывод через хук, потому что настройки сохраняются после обновлений и понятны редакторам.
Сравнение подходов: плагин, код или гибрид
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройка в SEO-плагине | Если sitemap генерирует Yoast, Rank Math или аналог | Зависит от интерфейса и версии плагина |
| Код через фильтры WordPress | Если нужен точечный контроль над ядром sitemap | Нужно аккуратно поддерживать код |
| Гибрид | Когда часть URL исключается настройками, а часть — кодом | Легко запутаться без документации |
Если сайт небольшой и правка нужна разово, обычно достаточно настроек плагина. Если у вас много кастомных типов и нестандартная структура, фильтры WordPress дают больше контроля.
Проверка результата после внедрения
После изменения не ограничивайтесь визуальной проверкой в админке. Нужно убедиться, что sitemap реально обновился и старые URL больше не отдаются.
- Откройте sitemap в браузере в режиме инкогнито.
- Проверьте, исчез ли лишний URL из нужного раздела.
- Если используется кэш, очистите его на уровне плагина, сервера и CDN.
- Прогоните sitemap через Search Console или аналогичный инструмент проверки.
- Убедитесь, что страница не возвращает ошибку и не дублируется в другом sitemap-файле.
Полезно также проверить HTTP-ответ напрямую. Например, если URL должен быть скрыт, но остаётся доступным, вы увидите, что проблема не в sitemap, а в логике доступа или шаблоне.
curl -I https://example.com/wp-sitemap.xmlЕсли sitemap генерируется кэшем, иногда изменения видны не сразу. В таком случае сначала сбросьте кэш, а уже потом делайте выводы о результате.
Частые ошибки и как их исправить
Отключили URL в robots.txt, но он всё ещё в sitemap
Это не ошибка WordPress, а неверная последовательность действий. Сначала уберите URL из sitemap, потом уже решайте, нужен ли запрет на обход. Иначе поисковик продолжит видеть адрес в карте сайта.
Скрыли страницу через noindex, но оставили в sitemap
Так делать можно, но это спорная комбинация. Если страница не должна индексироваться, лучше убрать её и из sitemap, и из выдачи поиска по сайту, чтобы не создавать противоречивые сигналы.
Правили не тот sitemap
На сайтах с SEO-плагином часто есть два источника карт сайта: штатный WordPress и плагин. Если вы меняете код для ядра, а sitemap отдаёт плагин, эффект будет нулевой. Сначала определите источник генерации.
Удалили URL из кэша, но не из генератора
Очистка кэша не решает проблему, если генератор sitemap по-прежнему включает лишний объект. Сначала исправляется логика выборки, потом очищается кэш.
Сломали sitemap для всех записей
Такое бывает, если в фильтре безусловно возвращают пустой массив или неправильно обращаются к ключам массива. Перед деплоем проверьте, что вы исключаете только нужный тип, таксономию или ID.
Безопасность и производительность: что учесть перед правкой
Любая правка sitemap должна быть минимальной и предсказуемой. Не стоит вносить код в основной файл темы, если вы часто обновляете шаблон. Лучше использовать дочернюю тему или отдельный mu-plugin, чтобы исключения не пропали после обновления.
Если sitemap большой, лишние объекты не только мешают индексации, но и увеличивают объём обхода. Это особенно заметно на новостных и контентных сайтах, где карта сайта обновляется часто. Убирать мусор из sitemap полезно не только для SEO, но и для общей технической гигиены.
Если вам нужен более широкий контроль над дублями, архивами, noindex и очисткой технических URL, имеет смысл смотреть в сторону инструментов, которые закрывают эти задачи комплексно. Например, Clearfy Pro полезен именно там, где нужно убрать лишнее из индексации и не держать это в голове в десятке разных настроек: https://wpshop.ru/plugins/clearfy.
Что проверить, если URL всё ещё не исчез
- нет ли у страницы отдельного sitemap, который генерирует плагин;
- не создаёт ли URL другой post type с похожим slug;
- не остался ли объект в кеше CDN;
- не переопределяет ли тему или плагин стандартные фильтры;
- не включён ли URL в sitemap через кастомный код в другом месте.
Если после всех правок лишний адрес всё ещё появляется, ищите не в визуальной части, а в логике генерации. В WordPress такие проблемы почти всегда решаются на уровне источника данных, а не на уровне отображения.