XML sitemap в WordPress часто включают «на всякий случай», а потом удивляются, почему в карту попадают служебные записи, тестовые CPT, архивы таксономий без контента или страницы, которые не должны индексироваться. Проблема не в самой карте сайта, а в том, что она начинает отправлять поисковикам мусорные URL. Если сайт активно развивается, это быстро превращается в технический долг.
Ниже — практический разбор: как понять, что именно попадает в sitemap, как отключить лишнее штатными средствами, когда нужен код, и как проверить, что изменения реально применились.
Когда sitemap нужно чистить, а когда трогать не стоит
Не всякий URL нужно выкидывать из XML-карты. Если страница должна индексироваться и приносить трафик, она должна оставаться в sitemap. А вот служебные сущности, дубли, архивы без ценности и контент, который вы уже закрыли от индексации, лучше убрать.
Типичные кандидаты на исключение
- кастомные типы записей для внутреннего использования: логирование, тестовые записи, временные сущности;
- таксономии с пустыми или почти пустыми архивами;
- страницы вложений, если они не используются как самостоятельные посадочные;
- черновики и записи со статусом, который не должен попадать в публичную карту;
- архивы, которые закрыты от индексации через
noindex, но по ошибке продолжают попадать в sitemap.
Если у вас уже есть проблема с дублями страниц, это соседняя задача: sitemap не лечит дубли, а только показывает поисковику, что считать важным. Поэтому сначала нужно убрать лишнее из карты, а потом проверить мета-теги и каноникал.
Диагностика: что именно попадает в XML sitemap
В WordPress с включённым встроенным XML sitemap нужно сначала понять, какой источник формирует лишние URL. Для этого откройте карту сайта в браузере и посмотрите, какие разделы там есть. Обычно это /wp-sitemap.xml и дочерние карты для постов, страниц, таксономий и авторов.
Если у вас стоит SEO-плагин, карта может генерироваться уже им. Тогда логика исключения будет зависеть от конкретного плагина, но принцип один: сначала найти тип записи или таксономию, потом отключить её в генерации sitemap, а не просто прятать URL через robots.txt.
Что проверить вручную
- Откройте
/wp-sitemap.xmlили карту от SEO-плагина. - Посмотрите, есть ли там лишний тип записей или таксономия.
- Сравните URL из sitemap с тем, что реально должно индексироваться.
- Проверьте, не закрыт ли этот же раздел через
noindex— если закрыт, но остался в sitemap, это нужно исправить.
Полезно также посмотреть ответ сервера для конкретного sitemap-файла. Если карта отдаёт 404, значит проблема не в исключении URL, а в том, что sitemap вообще не генерируется или конфликтует с плагином/кэшем.
Как отключить тип записи из встроенного sitemap WordPress
Если вы используете встроенную XML-карту WordPress, самый надёжный способ — фильтр wp_sitemaps_post_types. Он позволяет убрать целый тип записей из карты, не ломая публичный вывод сайта.
Пример: исключаем кастомный тип portfolio из sitemap.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['portfolio'] );
return $post_types;
} );Если нужно убрать не только тип записей, но и таксономию, используйте фильтр wp_sitemaps_taxonomies.
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['portfolio_category'] );
return $taxonomies;
} );Код лучше добавлять в дочернюю тему или в небольшой mu-plugin, если это именно техническое правило для сайта, а не временный эксперимент.
Как исключить только отдельные записи
Если нужно убрать не весь тип, а несколько конкретных записей, встроенный sitemap WordPress не даёт удобного фильтра на уровне одного поста для всех сценариев. В таком случае обычно решают задачу через noindex и каноникал, либо через SEO-плагин, если он умеет исключать записи по ID.
Для встроенной карты можно точечно скрыть записи из публичного списка через фильтрацию запросов, но это уже не про sitemap, а про логику контента. Не стоит подменять одну задачу другой.
Если sitemap генерирует SEO-плагин
У плагинов логика исключения обычно настраивается в интерфейсе. Это удобнее, чем писать код, если вам нужно убрать один-два раздела без поддержки разработчика. Но интерфейс зависит от конкретного решения, поэтому здесь важнее принцип: отключайте типы записей и таксономии в настройках sitemap, а не прячьте их постфактум.
| Способ | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Настройки SEO-плагина | Нужно быстро убрать раздел без кода | Просто поддерживать | Зависит от возможностей плагина |
| Фильтры WordPress | Нужен точный контроль | Работает на уровне кода | Нужно аккуратно тестировать |
| robots.txt | Нужно ограничить обход | Быстрое временное решение | Не убирает URL из уже известного sitemap |
Если у вас на сайте уже используется Clearfy Pro, часть задач по чистке дублей и технических страниц можно закрыть в одном месте, но всё равно проверьте, как именно формируется sitemap: через ядро WordPress или через SEO-плагин. От этого зависит, где искать настройку.
Пошаговое решение для типового сайта
Ниже рабочая последовательность, если вам нужно убрать лишний тип записей из карты сайта и не сломать индексацию полезных страниц.
- Определите источник sitemap: ядро WordPress или SEO-плагин.
- Составьте список того, что должно остаться в индексации.
- Уберите из sitemap только лишние типы записей и таксономии.
- Проверьте, не конфликтует ли это с
noindexи каноникалами. - Обновите кэш, если он есть на сайте или на сервере.
- Переоткройте sitemap и убедитесь, что лишние URL исчезли.
Если у вас сложная структура контента, полезно сначала отключать не записи, а таксономии. Часто именно архивы рубрик, меток или внутренних классификаций создают шум в индексации.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что карта сайта действительно отдает новый список URL, а не старый кэш.
Что проверить
- открывается ли
/wp-sitemap.xmlбез ошибок; - исчез ли из карты нужный тип записей или таксономия;
- не остались ли старые URL в кэше CDN или плагина кэширования;
- нет ли страниц, которые закрыты от индексации, но всё ещё попадают в sitemap;
- не появились ли 404 в дочерних sitemap-файлах.
Если используете Search Console, отправьте sitemap на повторную обработку и посмотрите, как поисковик видит структуру. Это не мгновенная проверка, но она помогает понять, ушла ли проблема из источника.
<?php
// Быстрая проверка, что тип записи не попадает в sitemap.
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['portfolio'] ) ) {
error_log( 'portfolio is still in sitemap post types' );
}
return $post_types;
} );Этот фрагмент не для постоянной работы, а для отладки. После проверки его нужно убрать, чтобы не засорять лог.
Частые ошибки и как их исправить
Отключили URL в robots.txt, но он остался в sitemap
Это частая путаница. robots.txt ограничивает обход, но не управляет генерацией sitemap. Если URL уже есть в карте, его нужно убрать на уровне генератора sitemap.
Скрыли страницу через noindex, но оставили в карте сайта
Так делать можно только временно. Для поисковика это противоречивый сигнал: вы одновременно показываете URL в sitemap и просите не индексировать его. Лучше убрать страницу из sitemap, если она не должна индексироваться.
Сломали sitemap после обновления темы или плагина
Если код был добавлен в тему, обновление могло его затереть. Для технических фильтров безопаснее использовать дочернюю тему или mu-plugin.
Не очистили кэш
После изменения sitemap старый XML может продолжать отдаваться из кэша. Особенно это заметно на сайтах с CDN и серверным кэшированием. Пока кэш не сброшен, вы будете смотреть на старую версию карты.
Безопасность и производительность
Фильтры sitemap сами по себе лёгкие, но если вы добавляете много условий и проверок, не делайте тяжёлые запросы к базе на каждом рендере XML. Для исключения типов записей и таксономий достаточно работать с массивами, без дополнительных запросов.
Если задача временная, не оставляйте отладочный код в продакшене. Логи, error_log() и условные проверки на каждом запросе sitemap должны быть удалены после теста.
Для сайтов с большим количеством контента полезно держать технические правила в одном месте: отдельный mu-plugin, понятные комментарии и список того, что исключено из индексации и почему. Это проще сопровождать, чем искать фильтры по теме и плагинам.
Если вам нужен более широкий технический аудит сайта, имеет смысл параллельно проверить дубли, архивы и служебные страницы. На практике sitemap почти всегда связан с общей чисткой индексации, а не с одной точечной настройкой.