В WordPress карта сайта часто расползается на несколько XML-файлов: записи, страницы, рубрики, теги, авторы, вложения. На небольшом сайте это не проблема, но на проектах с большим количеством таксономий и служебных типов записей лишние sitemap начинают мешать: в индекс попадают страницы, которые вы не хотите продвигать, а в Search Console становится сложнее понять, что именно отдает сайт.
Ниже — практический сценарий: как отключить отдельные XML sitemap, оставить только нужные разделы и проверить, что WordPress не отдает лишнее через /wp-sitemap.xml.
Когда это действительно нужно
Отключать отдельные карты сайта имеет смысл не ради «чистоты», а когда есть конкретная задача:
- в sitemap попадают служебные таксономии, которые не должны индексироваться;
- нужно убрать вложения, авторов или нестандартные типы записей;
- на сайте есть дубли контента, и вы хотите сократить шум для поисковиков;
- вы используете собственную логику sitemap через SEO-плагин или кастомный генератор;
- в Search Console появляются URL, которые не должны были попасть в обход.
Если у вас уже есть статья про полное отключение XML sitemaps, здесь задача другая: не убрать все карты сайта, а точечно отключить только часть из них.
Диагностика: что именно сейчас отдает WordPress
Сначала проверьте, какие sitemap доступны на сайте. В стандартном WordPress это стартовая карта /wp-sitemap.xml, а внутри нее — ссылки на отдельные наборы URL. Откройте ее в браузере или через curl:
curl -I https://example.com/wp-sitemap.xmlЕсли карта существует, посмотрите ее содержимое. Важно понять, какие именно разделы вам мешают: авторы, категории, теги, медиа, кастомные типы записей.
curl https://example.com/wp-sitemap.xmlДальше проверьте, не генерирует ли sitemap SEO-плагин. У Yoast, Rank Math и похожих решений свои адреса и своя логика. Если у вас одновременно включены и штатные карты WordPress, и карты плагина, поисковик может видеть лишние источники URL.
Что лучше отключать: сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| Отключить отдельные sitemap через код | Нужна точечная настройка без лишних плагинов | Нужно править тему или mu-plugin |
| Настроить SEO-плагин | Уже используете Yoast/Rank Math и хотите управлять картой сайта из админки | Не всегда можно убрать именно штатные sitemap WordPress |
| Отключить все sitemap целиком | Есть собственный генератор или сайт не должен отдавать XML sitemap вообще | Потеря стандартного механизма WordPress |
Пошаговое решение через фильтры WordPress
В ядре WordPress для карт сайта есть фильтры, которые позволяют убрать конкретные типы sitemap. Это безопаснее, чем переписывать роутинг или лезть в ядро.
1. Отключите ненужные типы sitemap
Добавьте код в functions.php дочерней темы или, лучше, в небольшой mu-plugin. Пример ниже отключает авторов, теги и вложения, оставляя записи, страницы и категории:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['attachment'] );
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
unset( $taxonomies['post_tag'] );
return $taxonomies;
} );
add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) {
if ( 'users' === $name ) {
return false;
}
return $provider;
}, 10, 2 );Здесь важно понимать логику: wp_sitemaps_post_types управляет типами записей, wp_sitemaps_taxonomies — таксономиями, а wp_sitemaps_add_provider позволяет убрать провайдер целиком, например sitemap авторов.
2. Если нужен более жесткий контроль, отключите конкретный тип записи
Иногда в sitemap попадает кастомный post type, который не должен индексироваться вообще. Тогда его можно убрать отдельно:
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['portfolio'] ) ) {
unset( $post_types['portfolio'] );
}
return $post_types;
} );Это полезно, если у вас есть CPT для внутреннего каталога, архивов документов или технических страниц, которые не должны светиться в XML.
3. Не забудьте про SEO-плагин
Если у вас включен Yoast SEO, Rank Math или другой плагин, проверьте, не генерирует ли он собственную карту сайта поверх штатной. Иначе вы отключите только /wp-sitemap.xml, а поисковик все равно увидит альтернативный XML.
Практически это выглядит так: сначала отключаете штатные карты WordPress, потом проверяете адреса SEO-плагина, и только после этого решаете, что оставлять.
Проверка результата после внедрения
После сохранения кода проверьте три вещи:
- открывается ли
/wp-sitemap.xml; - исчезли ли из него нужные вам разделы;
- не отдает ли сайт старые URL из кеша.
Проверка через консоль:
curl -I https://example.com/wp-sitemap.xml
curl https://example.com/wp-sitemap.xml | grep -E 'authors|tags|attachment|portfolio'Если вы используете кеш-плагин или серверный кеш, очистите его после изменения кода. Иначе вы можете увидеть старую версию sitemap и решить, что фильтр не сработал.
В Search Console изменения не отражаются мгновенно. Но если карта сайта действительно изменилась, при следующем обходе лишние URL перестанут приходить из этого источника.
Частые ошибки и как их исправить
Код добавили в родительскую тему
После обновления темы изменения пропадут. Для таких правок используйте дочернюю тему или mu-plugin. Это особенно важно, если вы отключаете sitemap на рабочем проекте, а не на тестовом стенде.
Отключили sitemap, но URL все еще доступны
Удаление из sitemap не равно запрету индексации. Если страница должна быть закрыта, отдельно проверьте noindex, каноникал и внутренние ссылки. Иначе поисковик может продолжить находить URL через навигацию или внешние ссылки.
Сломали карту сайта полностью
Если после правки /wp-sitemap.xml отдает 404 или пустой ответ, проверьте синтаксис PHP и приоритет фильтра. Ошибка в коде часто приводит к тому, что WordPress не может собрать карту вообще.
Отключили не тот провайдер
В WordPress есть разные уровни sitemap: провайдеры, типы записей, таксономии. Если вы убрали только users, а в индексе остались теги, значит проблема не в провайдере авторов, а в таксономиях.
Практические советы по безопасности и производительности
Не редактируйте functions.php на живом сайте через админку, если у вас нет доступа к файловому менеджеру или SSH. Одна синтаксическая ошибка может положить весь сайт. Безопаснее сначала проверить код на staging, а потом перенести в mu-plugin.
Если sitemap генерируется большим сайтом, не делайте лишних тяжелых запросов внутри фильтров. Фильтр должен только менять массивы или отключать провайдеры, без обращения к базе и без внешних HTTP-запросов.
Для проектов с несколькими редакторами полезно зафиксировать правило: если новый тип записи или таксономия добавляются в админке, их sitemap-статус тоже должен быть согласован. Иначе через пару месяцев в XML снова появится мусор.
Мини-чек-лист перед публикацией
- Проверил, какие sitemap реально отдает сайт.
- Убедился, что SEO-плагин не генерирует дублирующий XML.
- Добавил код в дочернюю тему или mu-plugin.
- Очистил кеш страницы и сервера.
- Проверил
/wp-sitemap.xmlчерез браузер иcurl. - Сверил, что нужные URL остались в карте сайта, а лишние исчезли.
Если вам нужно не точечно отключить отдельные sitemap, а полностью пересобрать логику индексации и чистки сайта, удобнее сначала настроить базовую структуру, а уже потом решать, какие карты сайта оставить. В таких задачах часто помогает комплексная чистка технических дублей и служебных элементов, например через Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpskins.ru&utm_medium=article&utm_campaign=kak-otklyuchit-otdelnye-xml-sitemap-v-wordpress.