Ситуация типовая: в XML sitemap попадают служебные страницы, архивы, тестовые записи, пагинация или дубли, а потом эти URL начинают светиться в отчётах Search Console. Сам sitemap сам по себе не индексирует страницы, но он подсказывает поисковику, что именно вы считаете важным. Если в карте сайта мусор, вы сами размываете приоритеты обхода.
Ниже разберём, какие URL действительно стоит убрать из sitemap, как это сделать через настройки SEO-плагина или кодом, и как проверить, что изменения сработали без побочных эффектов.
Какие страницы обычно нужно убрать из XML sitemap
Не все URL должны быть в карте сайта. В sitemap имеет смысл держать только те страницы, которые вы хотите продвигать и которые должны быстро попадать в обход поисковых роботов. Остальное лучше исключить точечно.
- служебные страницы:
/cart/,/checkout/,/my-account/— если они вообще есть на сайте; - страницы поиска по сайту;
- архивы с пустым или слабым контентом;
- страницы пагинации, если они не несут самостоятельной ценности;
- метки и таксономии, которые дублируют рубрики;
- черновики, приватные записи, тестовые материалы;
- авторские архивы на сайтах с одним автором, если они не нужны для SEO.
Важно не путать sitemap и индексацию. Если страница уже закрыта от индексации, но остаётся в sitemap, это не катастрофа, но выглядит как несогласованная настройка. Лучше привести оба механизма к одному логике.
Диагностика: что именно лишнее в карте сайта
Перед правкой откройте сам sitemap и посмотрите, какие URL туда попадают. В WordPress это обычно /sitemap_index.xml или отдельные XML-файлы, если используется SEO-плагин. Дальше проверьте три вещи: тип страницы, её статус и реальную ценность для поиска.
Что проверить вручную
- есть ли в sitemap URL с параметрами или техническими путями;
- не попадают ли туда записи с
noindex; - не дублируются ли одни и те же материалы через рубрики, теги и архивы;
- не включены ли в карту сайта страницы, которые закрыты в robots.txt;
- не меняется ли sitemap после очистки кэша.
Если у вас стоит SEO-плагин, сначала проверьте его настройки. Во многих случаях проблема решается без кода: достаточно отключить конкретный тип контента или таксономию в XML sitemap.
Способы исключить URL из XML sitemap
Есть два рабочих подхода: через интерфейс плагина и через код. Первый проще и безопаснее для типовых сайтов. Второй нужен, если у вас кастомные типы записей, сложная логика или вы не хотите зависеть от настроек плагина.
| Способ | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Стандартные записи, страницы, рубрики, теги | Меньше гибкости |
| Код через фильтры WordPress | Кастомные post type и точечные исключения | Нужно аккуратно тестировать после обновлений |
| Удаление через robots.txt | Редко, только для обхода роботов | Не убирает URL из sitemap и не решает задачу полностью |
Вариант 1: через SEO-плагин
Если у вас установлен плагин вроде Yoast SEO или Rank Math, откройте настройки XML sitemap и отключите ненужные типы контента. Обычно это делается в разделе, где можно включать и выключать посты, страницы, таксономии и архивы.
Логика простая: если архив не должен участвовать в поиске, его не должно быть и в sitemap. Если у вас есть служебный post type, который нужен только для работы сайта, исключите его из карты сайта и, при необходимости, дополнительно закройте от индексации.
Если на сайте используется Clearfy Pro, часть таких задач тоже можно закрыть через настройки SEO и чистки WordPress. Это удобно, когда нужно убрать лишние архивы, служебные страницы и другие технические элементы без ручного кода. Clearfy Pro полезен именно как инструмент для системной чистки, но настройки всё равно нужно проверять вручную.
Вариант 2: исключить записи из sitemap кодом
Если нужно убрать конкретный тип записей из sitemap, можно использовать фильтр wp_sitemaps_post_types. Это штатный механизм WordPress, без выдуманных хуков и без привязки к стороннему плагину.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['newsletter'] );
unset( $post_types['landing'] );
return $post_types;
} );Этот код убирает из sitemap два кастомных типа записей: newsletter и landing. Подставьте свои значения из register_post_type(). Если тип записи нужен на сайте, но не должен попадать в карту сайта, это нормальный сценарий.
Для таксономий есть отдельный фильтр wp_sitemaps_taxonomies:
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
unset( $taxonomies['city'] );
return $taxonomies;
} );Такой подход полезен, если теги или гео-архивы создают слишком много слабых страниц. Но не удаляйте таксономию из sitemap только потому, что она «много весит» — сначала проверьте, есть ли у неё трафик и входящие ссылки.
Вариант 3: убрать конкретные записи по ID
Если проблема точечная, можно исключить отдельные записи через фильтр wp_sitemaps_posts_query_args. Это удобно для тестовых страниц, внутренних документов или устаревших материалов, которые пока нельзя удалить.
<?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. Этот способ лучше использовать точечно, а не как постоянную массовую практику.
Пошаговое решение без лишнего риска
- Откройте текущий sitemap и выпишите лишние URL или типы контента.
- Проверьте, не закрыты ли они уже через
noindexили robots.txt. - Если используете SEO-плагин, отключите ненужные типы в его настройках XML sitemap.
- Если нужна точечная логика, добавьте фильтр в
functions.phpдочерней темы или в собственный мини-плагин. - Очистите кэш сайта и CDN, если он есть.
- Проверьте sitemap в браузере и в Search Console.
Если правка делается кодом, лучше вынести её в отдельный мини-плагин. Так вы не потеряете настройку при смене темы. Для небольших сайтов это надёжнее, чем править functions.php активной темы.
Как проверить, что исключение из sitemap сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужно убедиться, что XML реально изменился и поисковик видит обновлённую версию.
- откройте
/sitemap_index.xmlи убедитесь, что нужный тип или URL исчез; - проверьте дочерние sitemap-файлы, если карта сайта разбита по типам;
- в Search Console отправьте sitemap на повторную обработку, если это уместно;
- посмотрите исходный код страницы и убедитесь, что ссылки на исключённые URL больше не генерируются в карте сайта;
- очистите кэш, если изменения не отображаются сразу.
Если URL всё ещё виден в отчётах, это не всегда ошибка. Поисковик может хранить старую версию sitemap какое-то время. Важнее, чтобы новая карта сайта уже не содержала лишних страниц.
Частые ошибки и как их исправить
Удалили URL из sitemap, но не закрыли страницу от индексации
Это частая путаница. Страница может остаться доступной для обхода по внутренним ссылкам. Если она не должна индексироваться вообще, добавьте noindex и проверьте, что на неё не ведут важные внутренние ссылки.
Скрыли страницу в robots.txt и решили, что она исчезнет из sitemap
Не исчезнет. Robots.txt управляет обходом, а не генерацией sitemap. Если URL попадает в карту сайта, убирайте его именно там, где он формируется.
Правили не тот тип записи
В кастомных проектах часто путают post_type и slug таксономии. Сначала посмотрите точное имя в коде регистрации, иначе фильтр просто не сработает.
Изменения не видны из-за кэша
Если сайт использует page cache, object cache или CDN, sitemap может отдаваться старой версией. После правки очистите все уровни кэша и только потом проверяйте результат.
Слишком агрессивно убрали архивы
Иногда вместе с мусором из sitemap вырезают полезные страницы: рубрики с трафиком, архивы авторов или геостраницы. Перед отключением проверьте статистику и внутренние переходы, а не ориентируйтесь только на визуальную «чистоту» карты сайта.
Практические советы по безопасности и производительности
Если вы используете код, не вставляйте его в случайный плагин из репозитория без проверки. Для точечных правок лучше свой мини-плагин или дочерняя тема. После обновлений WordPress и SEO-плагина перепроверяйте sitemap: фильтры ядра обычно стабильны, но логика генерации может меняться.
Для больших сайтов не делайте тяжёлые запросы в фильтрах sitemap. Исключение должно быть дешёвым: по типу записи, таксономии или списку ID. Не запускайте внутри фильтра дополнительные запросы к базе без необходимости.
Если на сайте много служебных страниц и дубликатов, имеет смысл сначала привести в порядок общую SEO-гигиену. В таких случаях полезно сочетать настройку sitemap с удалением лишних архивов, пагинации и технических дублей. Но каждую правку нужно проверять отдельно, чтобы не потерять нужные страницы из обхода.
Когда задача выходит за рамки стандартных настроек, удобнее сначала собрать список всех типов контента и таксономий, а потом уже решать, что должно быть в sitemap, а что нет. Это экономит время лучше, чем точечные исправления «по симптомам».