Когда в sitemap начинают попадать служебные записи, черновые типы контента, тестовые CPT или архивы, которые не должны индексироваться, проблема обычно не в самом XML-файле, а в настройках генерации. Если просто удалить URL вручную, они часто возвращаются после обновления плагина или пересборки карты сайта. Надёжнее управлять источником, из которого sitemap собирается.
Ниже разберём рабочие варианты для WordPress: через код, через SEO-плагин и через проверку результата. Сценарий полезен, если у вас есть кастомные типы записей, которые нужны на сайте, но не должны попадать в sitemap.
Когда это действительно нужно
Не каждый URL в sitemap обязан быть полезным для поиска. Часто туда попадают:
- служебные CPT вроде
event_log,import_queue,promo_landing; - тестовые записи, оставшиеся после разработки;
- типы контента, которые открыты для пользователей, но не должны индексироваться;
- дублирующие страницы, которые уже закрыты от индексации другими способами.
Если карта сайта содержит лишнее, поисковик тратит обход на мусорные URL. Это не всегда критично, но на больших сайтах лишние записи в sitemap мешают контролировать индексацию и усложняют диагностику.
Диагностика: что именно попадает в sitemap
Сначала не меняйте код. Посмотрите, какие именно типы записей или таксономии попали в карту сайта. В WordPress 5.5+ встроенный sitemap доступен по адресу /wp-sitemap.xml. Если используется SEO-плагин, адрес может быть другим, но принцип тот же: нужно понять источник URL.
Что проверить в первую очередь
- какой плагин генерирует sitemap;
- какие типы записей включены в публичный вывод;
- нет ли у нужного типа записей флага
publicилиpublicly_queryable; - не дублируется ли карта сайта встроенным генератором и SEO-плагином одновременно.
Если у вас включены сразу два генератора sitemap, сначала оставьте один. Иначе вы будете править не ту карту, а результат проверки окажется ложным.
Пошаговое решение через код
Для встроенного WordPress sitemap удобно использовать фильтры, которые позволяют убрать целый тип записей из карты сайта. Это безопаснее, чем править шаблоны или удалять записи из базы.
1. Отключить тип записей из sitemap
Добавьте код в functions.php дочерней темы или, лучше, в небольшой mu-plugin. Пример убирает тип записей promo_landing из sitemap WordPress:
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['promo_landing'] );
return $post_types;
} );Если нужно убрать несколько типов, удаляйте их по одному. Так проще понять, что именно изменилось после правки.
2. Убрать отдельную таксономию
Если проблема не в записях, а в рубриках или другой таксономии, используйте фильтр для таксономий:
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['event_category'] );
return $taxonomies;
} );Это полезно, когда таксономия существует только для внутренней структуры сайта и не должна участвовать в поиске.
3. Если sitemap генерирует SEO-плагин
У популярных SEO-плагинов логика отличается. Обычно у них есть собственные настройки, где можно выключить типы записей из XML sitemap без кода. Это предпочтительнее, если плагин уже управляет индексированием сайта.
| Подход | Когда использовать | Минус |
|---|---|---|
| Настройки плагина | Если sitemap уже генерирует SEO-плагин | Зависит от интерфейса и версии плагина |
| Фильтры WordPress | Если нужен точечный контроль | Нужно следить за темой и mu-plugin |
| Правка robots.txt | Только как дополнительная мера | Не убирает URL из sitemap |
Если у вас установлен Clearfy Pro, часть задач по чистке сайта и SEO-управлению можно закрыть через интерфейс плагина, но для точечного контроля над sitemap всё равно полезно понимать, где именно происходит генерация. Ссылка на продукт: Clearfy Pro.
Проверка результата после внедрения
После изменения не ограничивайтесь открытием главной карты сайта. Проверка должна быть практической.
- Откройте
/wp-sitemap.xmlили sitemap вашего SEO-плагина. - Проверьте, исчез ли нужный тип записей из списка.
- Откройте конкретный дочерний sitemap, если он есть, и убедитесь, что URL больше не выдаются.
- Посмотрите исходный HTML страницы записи: если она должна оставаться доступной, но не индексироваться, это отдельная настройка.
- В Google Search Console отправьте sitemap повторно и проверьте, не растёт ли число обнаруженных URL из исключённого типа.
Для локальной проверки удобно использовать curl:
curl -s https://example.com/wp-sitemap.xml | grep -n "promo_landing"Если команда ничего не выводит, это ещё не окончательное доказательство, но хороший быстрый сигнал. Для точности откройте сам XML и проверьте, что нужный раздел исчез полностью, а не только из главной страницы sitemap.
Частые ошибки и как их исправить
Удалили URL из sitemap, но он всё равно индексируется
Это нормально, если страница уже известна поисковику. Удаление из sitemap не равно удалению из индекса. Если URL нужно исключить полностью, нужна отдельная стратегия: noindex, редирект, удаление страницы или корректная настройка канонического URL.
Скрыли тип записей, но он вернулся после обновления
Значит, правка была внесена не туда. Если код лежал в родительской теме, обновление могло его затереть. Для таких задач лучше использовать дочернюю тему или mu-plugin.
Отключили тип записей в sitemap, но сломали внутренние ссылки
Это бывает, если вместе с sitemap отключили публичность типа записей. Не путайте public и участие в карте сайта. Запись может быть доступна на сайте, но не обязана попадать в XML sitemap.
Правили robots.txt вместо sitemap
robots.txt управляет обходом, а не списком URL в карте сайта. Если URL уже есть в sitemap, robots.txt не уберёт его оттуда. Это разные задачи.
Чек-лист перед публикацией изменений
- Поняли, какой именно генератор sitemap используется.
- Определили тип записей или таксономию, которую нужно убрать.
- Внесли правку в код или настройки плагина, а не в базу данных.
- Проверили, что нужный URL исчез из дочернего sitemap.
- Убедились, что страницы сайта не потеряли доступность, если они должны оставаться открытыми.
- Повторно отправили sitemap в Search Console.
Практические советы по безопасности и производительности
Если вы вносите такие правки регулярно, не держите их в шаблоне темы. Для точечных SEO-изменений лучше использовать mu-plugin: он не зависит от темы и не исчезает после обновления. Это особенно полезно на проектах, где sitemap и индексация меняются чаще, чем дизайн.
Не отключайте целые типы записей без проверки зависимостей. Иногда CPT участвует в хлебных крошках, фильтрах, поиске по сайту или API. Перед удалением из sitemap убедитесь, что это именно SEO-задача, а не попытка скрыть проблему в структуре контента.
Если сайт большой, после изменений проверьте логи обхода и карту сайта в Search Console. На практике именно там видно, ушёл ли лишний контент из обхода или остался в старых отчётах.