Если в XML-карте сайта у вас всплывают рубрики, метки или другие таксономии, которые не должны индексироваться, это обычно решается точечно: отключаем их из sitemap, а не трогаем весь файл целиком. Такой подход полезен, когда нужно убрать мусорные URL, но сохранить нормальную индексацию записей, страниц и нужных архивов.
Ниже — рабочий сценарий для WordPress с встроенным XML sitemap. Он не требует выдуманных плагинов и не ломает генерацию карты сайта для остальных типов контента.
Когда проблема действительно в таксономиях
Сначала проверьте, что именно попадает в sitemap и зачем это мешает. Не все таксономии нужно скрывать: иногда рубрики полезны для поиска, а иногда это пустые архивы с одним постом и без ценности для индекса.
Что обычно видно в диагностике
- в sitemap есть URL вида
/category/...или/tag/..., но на этих страницах почти нет полезного контента; - поисковик индексирует архивы меток, которые дублируют страницы записей;
- в отчётах по сканированию много архивов, которые не приносят трафик;
- нужно оставить sitemap только для записей, страниц и, возможно, отдельных таксономий.
Проверка простая: откройте /wp-sitemap.xml и посмотрите, какие разделы там есть. Если вы видите блоки таксономий, значит WordPress их публикует штатно.
Как отключить таксономию из XML sitemap через код
Встроенный sitemap WordPress можно фильтровать. Для таксономий используется фильтр wp_sitemaps_taxonomies. Он получает массив зарегистрированных таксономий, которые попадут в карту сайта, и позволяет убрать лишние элементы.
Если вам нужно исключить, например, post_tag и оставить рубрики, используйте такой код в functions.php дочерней темы или в собственном мини-плагине:
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );
Если нужно убрать несколько таксономий, удаляйте их по ключу. Ключ — это системное имя таксономии, а не её ярлык в админке.
<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
$exclude = array( 'post_tag', 'product_tag', 'portfolio_category' );
foreach ( $exclude as $taxonomy ) {
if ( isset( $taxonomies[ $taxonomy ] ) ) {
unset( $taxonomies[ $taxonomy ] );
}
}
return $taxonomies;
} );
Если таксономия нужна на сайте, но не в sitemap
Это нормальный сценарий. Архив может быть доступен пользователям и внутренней перелинковке, но не обязан попадать в XML sitemap. Главное — не путать sitemap с индексацией как таковой. Убрать URL из карты сайта и закрыть его от индексации — это разные действия.
Сравнение подходов: код, плагин, ручная настройка
| Подход | Что делает | Плюсы | Минусы |
|---|---|---|---|
Код через wp_sitemaps_taxonomies | Убирает выбранные таксономии из sitemap | Точно, без лишних зависимостей | Нужен доступ к коду |
| SEO-плагин | Может скрывать архивы и управлять индексом | Удобно для редакторов | Логика зависит от конкретного плагина |
| Ручное удаление архивов | Ничего не меняет в sitemap | Безопасно для контента | Проблему не решает |
Если задача точечная и вам не нужен тяжёлый интерфейс, код обычно надёжнее. Если же у вас уже стоит SEO-плагин и команда работает через админку, можно использовать его настройки, но сначала проверьте, не конфликтует ли он с встроенным sitemap WordPress.
Пошаговое решение без лишних рисков
- Откройте
/wp-sitemap.xmlи зафиксируйте, какие таксономии сейчас публикуются. - Определите системные имена таксономий, которые нужно убрать.
- Добавьте фильтр
wp_sitemaps_taxonomiesв дочернюю тему или мини-плагин. - Очистите кэш сайта и, если есть, кэш CDN.
- Проверьте, что sitemap обновился и лишние разделы исчезли.
- Отправьте обновлённую карту сайта в Search Console, если это требуется в вашем процессе.
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по факту. Откройте sitemap в браузере и убедитесь, что нужный блок таксономии исчез. Затем проверьте исходный XML: в нём не должно быть ссылок на исключённые архивы.
Дополнительно полезно сделать такую проверку:
- поиск по
wp-sitemap-taxonomiesили по URL таксономии внутри sitemap; - проверка ответа сервера на
/wp-sitemap.xmlпосле очистки кэша; - сравнение старой и новой версии sitemap, если у вас есть лог изменений;
- контроль в Search Console: исключённые URL не должны продолжать массово появляться из sitemap.
Если sitemap не меняется сразу, почти всегда причина в кэше. Сначала сбросьте кэш плагина, потом серверный кэш, потом CDN. Только после этого смотрите результат.
Частые ошибки и как их исправить
Удалили не ту таксономию
Ошибка типичная: в коде используют ярлык из админки вместо системного имени. В результате фильтр не срабатывает. Проверьте регистрацию таксономии в коде темы или плагина.
Ожидали, что sitemap и noindex — это одно и то же
Это разные механизмы. Если архив остаётся доступным по URL, но вы убрали его из sitemap, поисковик всё равно может найти его через внутренние ссылки. Если нужно ограничить индексацию, настраивайте ещё и meta robots или HTTP-заголовки, но только после анализа последствий.
Внесли правку в родительскую тему
После обновления изменения пропадут. Для таких правок используйте дочернюю тему или отдельный мини-плагин.
Не очистили кэш
Это одна из самых частых причин ложного вывода, что код не работает. Sitemap может отдаваться из кэша даже после корректной правки.
Практические советы по безопасности и производительности
Не отключайте таксономии из sitemap «на всякий случай». Если архивы реально собирают трафик или помогают навигации, их лучше оставить. Сначала посмотрите статистику и только потом режьте лишнее.
Если у вас много таксономий и сложная структура сайта, удобнее вынести такие настройки в отдельный мини-плагин. Так вы не потеряете правку при смене темы и не будете искать её в шаблонах.
Для сайтов с большим количеством служебных архивов полезно держать под рукой инструменты для чистки дублей и SEO-настроек. Если нужен более широкий набор таких функций, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, что именно делает конкретная настройка, а не включайте всё подряд.
Что делать, если таксономия всё равно остаётся в sitemap
Если фильтр не сработал, проверьте три вещи: правильное имя таксономии, место подключения кода и наличие конфликтующего SEO-плагина. Иногда плагин перехватывает sitemap раньше, чем срабатывает ваш код, и тогда нужно смотреть его настройки или отключать дублирующую логику.
В редких случаях проблема связана не с WordPress, а с внешним кэшем или прокси. Тогда sitemap на сервере уже обновился, а пользователю всё ещё отдается старая версия. В такой ситуации сначала очищайте кэш на всех уровнях, а потом повторяйте проверку.