Когда в sitemap попадают служебные записи, внутренние таксономии, архивы с пустым или слабым контентом, поисковику становится сложнее понять, что на сайте действительно важно. В WordPress это часто всплывает после установки SEO-плагина, добавления кастомных типов записей или переноса старого сайта, где часть контента уже не должна индексироваться.
Задача здесь не в том, чтобы «выключить sitemap целиком», а в том, чтобы оставить в нём только полезные URL. Ниже разберём, как диагностировать проблему, какие есть рабочие способы исключить отдельные типы записей и таксономии, и как проверить, что изменения не сломали индексацию нужных страниц.
Когда sitemap нужно чистить, а не трогать целиком
XML sitemap сам по себе не заставляет страницы индексироваться, но он сильно влияет на приоритет обхода. Если в карту сайта попадают URL, которые вы не хотите продвигать, это создаёт шум: бот тратит обход на архивы, фильтры, служебные страницы и дубли.
Типичные сценарии:
- в sitemap есть
attachment-страницы с медиа-вложениями, которые не нужны в поиске; - кастомный тип записей используется только для внутренней логики;
- таксономия создаёт тонкие архивы без ценности для пользователя;
- в карту сайта попадают старые разделы после миграции или редизайна;
- SEO-плагин автоматически добавляет всё подряд, а ручной настройки ещё не было.
Диагностика проблемы перед правками
Сначала нужно понять, кто именно генерирует sitemap и какие URL туда попадают. В WordPress это может быть встроенный генератор ядра или SEO-плагин. От этого зависит способ настройки.
Проверьте источник sitemap
Если у вас WordPress 5.5 и выше, у ядра есть собственный sitemap по адресу /wp-sitemap.xml. Но на практике его часто заменяют Yoast SEO, Rank Math или другим SEO-плагином. Если плагин активен, именно он обычно управляет картой сайта.
Что проверить:
- откройте
/wp-sitemap.xmlи посмотрите, есть ли там стандартная карта ядра; - проверьте, не отдаёт ли SEO-плагин свой sitemap по другому адресу;
- посмотрите, какие разделы карты сайта содержат лишние типы записей или таксономии;
- сравните список URL в sitemap с тем, что реально должно индексироваться.
Сравните sitemap с robots.txt и meta robots
Частая ошибка — пытаться решить всё только через robots.txt. Если URL уже попал в sitemap, но закрыт от индексации только robots, поисковик всё равно увидит его как существующий и может тратить на него обход. Для чистки sitemap лучше сначала убрать URL из карты сайта, а уже потом при необходимости дополнительно ограничить индексацию.
Если у страницы должен быть статус noindex, это не всегда означает, что её нужно удалять из sitemap. Но если страница не должна участвовать в поиске вообще, логичнее исключить её из карты сайта.
Способы отключить отдельные типы записей и таксономии
Ниже — три рабочих подхода: через настройки плагина, через фильтры в коде и через компромиссный вариант, когда нужно быстро убрать только часть URL.
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует Yoast SEO, Rank Math или похожий плагин | Без кода, быстро, удобно для редактора | Не всегда хватает гибкости для сложных правил |
| Фильтры в коде | Если нужен точечный контроль над CPT и таксономиями | Точно, прозрачно, не зависит от интерфейса | Нужно аккуратно обновлять тему или mu-plugin |
| Комбинированный подход | Если часть URL убирается в плагине, а часть — кодом | Гибкость и контроль | Легко запутаться без документации |
Вариант 1: убрать типы записей через SEO-плагин
Если sitemap формирует SEO-плагин, сначала ищите настройку индексации для конкретного post type или taxonomy. У большинства плагинов есть отдельные переключатели для включения в sitemap и для индексации.
Логика простая: если тип записей не должен участвовать в поиске, его нужно отключить в настройках SEO-плагина, а не только прятать через robots.
Плюс этого подхода в том, что плагин сам перестроит карту сайта и не будет отдавать лишние URL. Минус — интерфейс у разных плагинов отличается, и иногда нужная настройка спрятана глубоко.
Вариант 2: исключить типы записей через код
Если нужен предсказуемый результат, удобнее использовать фильтр wp_sitemaps_post_types. Он работает с встроенным sitemap WordPress и позволяет убрать ненужные типы записей из карты сайта.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
// Убираем служебный тип записей из sitemap.
unset( $post_types['portfolio'] );
// Если нужно, можно убрать ещё один тип.
unset( $post_types['landing'] );
return $post_types;
} );Этот код лучше размещать в небольшом mu-plugin или в отдельном функциональном плагине, а не в functions.php активной темы. Так настройка не пропадёт при смене темы.
Вариант 3: исключить таксономии из sitemap
Для таксономий используется фильтр wp_sitemaps_taxonomies. Он полезен, когда в карте сайта появляются архивы тегов, внутренних рубрик или пользовательских таксономий, которые не несут SEO-пользы.
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
// Убираем внутреннюю таксономию из sitemap.
unset( $taxonomies['project_type'] );
// Часто имеет смысл убрать служебные теги, если они не нужны в поиске.
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );Важно: если вы убираете таксономию из sitemap, это не удаляет её архивы с сайта. Страницы останутся доступны по прямым ссылкам, но перестанут подсказываться поисковику через карту сайта.
Вариант 4: точечно убрать отдельные записи
Если проблема не в типе записей, а в нескольких конкретных страницах, используйте фильтр wp_sitemaps_posts_query_args и исключайте записи по ID. Это полезно для служебных страниц, которые случайно стали публичными.
<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
if ( 'page' === $post_type ) {
$args['post__not_in'] = array( 12, 34, 56 );
}
return $args;
}, 10, 2 );Этот вариант не заменяет нормальную настройку индексации, но помогает быстро убрать конкретные URL, пока вы приводите структуру сайта в порядок.
Пошаговое решение без лишнего риска
- Определите, кто генерирует sitemap: ядро WordPress или SEO-плагин.
- Составьте список лишних post type и taxonomies, которые не должны попадать в карту сайта.
- Сначала отключите их в настройках плагина, если это возможно.
- Если настроек не хватает, добавьте фильтры в mu-plugin или функциональный плагин.
- Очистите кеш сайта и кеш CDN, если он есть.
- Проверьте sitemap вручную и через инструменты для вебмастеров.
Если вы используете Clearfy Pro, часть задач по чистке сайта и удалению лишних SEO-элементов можно закрыть без ручного кода, но для точечного контроля над конкретными типами записей фильтры WordPress всё равно остаются самым надёжным вариантом. Подробности по плагину: https://wpshop.ru/plugins/clearfy.
Как проверить, что решение сработало
Проверка нужна не только в браузере. После правок убедитесь, что sitemap действительно изменился и поисковик видит именно ту структуру, которую вы задумали.
- откройте sitemap в браузере и проверьте, исчезли ли нужные разделы;
- посмотрите исходный XML, а не только визуальную страницу;
- проверьте ответ сервера: sitemap должен отдавать
200 OK; - если используется SEO-плагин, убедитесь, что его кеш sitemap обновился;
- в Google Search Console или другом инструменте вебмастера проверьте, не остались ли старые URL в отчётах как активно подаваемые через sitemap.
Если URL всё ещё видны, но вы уже убрали их из кода, чаще всего виноват кеш: плагин кеширования, серверный кеш, CDN или сам SEO-плагин, который хранит карту сайта отдельно.
Частые ошибки и как их исправить
Отключили URL в robots.txt, но оставили в sitemap
Это распространённая ошибка. В результате поисковик видит противоречие: URL есть в карте сайта, но доступ к нему ограничен. Исправление простое — сначала уберите URL из sitemap, потом уже решайте вопрос с robots или noindex.
Добавили код в functions.php и забыли про тему
Если фильтр лежит в теме, при смене темы он исчезнет. Для технических правил лучше использовать mu-plugin или отдельный мини-плагин. Так настройка не зависит от дизайна.
Скрыли таксономию, но не проверили архивы
Таксономия может быть убрана из sitemap, но её архивы всё ещё доступны и индексируются по ссылкам из сайта. Если архив действительно не нужен, нужно отдельно решить вопрос с noindex, редиректом или удалением шаблона архива.
Смешали sitemap ядра и sitemap плагина
Иногда после смены SEO-плагина остаются старые URL из встроенного sitemap WordPress. В таком случае проверьте, какой адрес реально отдаёт карту сайта, и отключите лишний генератор, чтобы не было двух разных источников.
Практические советы по безопасности и производительности
Фильтры для sitemap почти не нагружают сайт, если они написаны аккуратно. Но есть несколько правил, которые стоит соблюдать.
- не вставляйте код в случайные сниппеты без понимания, что они делают;
- храните правки в отдельном mu-plugin, если это постоянная логика;
- после изменений сбрасывайте кеш не только страницы, но и sitemap;
- не удаляйте из sitemap всё подряд только ради «чистоты» — поисковику нужен полезный список URL;
- если сайт большой, проверяйте карту сайта по частям, а не только главную страницу sitemap index.
Для крупных сайтов полезно вести короткий список правил: какие post type индексируются, какие таксономии нужны, какие архивы закрыты. Это экономит время при следующем редизайне или миграции.
Если вам нужно не только чистить sitemap, но и системно наводить порядок в SEO-настройках WordPress, имеет смысл смотреть на инструменты, которые закрывают сразу несколько технических задач, а не на разрозненные сниппеты. Но даже в этом случае проверка руками остаётся обязательной: карта сайта должна соответствовать реальной структуре сайта, а не ожиданиям плагина.