Как отключить XML sitemap в WordPress для отдельных типов записей

Ситуация типовая: сайт уже живёт, в индексе появляются служебные страницы, а в XML sitemap оказываются типы записей, которые вы не хотите продвигать. Чаще всего это черновые CPT, внутренние разделы, страницы фильтров, вложения или таксономии с пустым содержимым. Если просто удалить sitemap целиком, поисковики теряют нормальный сигнал о структуре сайта. Правильнее точечно исключить лишнее и оставить только то, что реально должно обходиться.

Ниже — рабочие способы для WordPress без выдуманных хуков и без опасных правок ядра. Разберём, как понять, что именно попадает в sitemap, как отключить отдельные типы записей через код или плагин, и как проверить, что после изменений карта сайта стала чище.

Когда проблема действительно в sitemap

Не каждый лишний URL в индексе связан именно с XML sitemap. Но если в отчётах Search Console вы видите страницы, которые не должны индексироваться, а они при этом присутствуют в карте сайта, это уже прямой сигнал. Поиск сначала идёт по sitemap, а потом по внутренним ссылкам и внешним сигналам. Если мусор есть в карте сайта, вы сами подсказываете поисковику, что его стоит обходить.

Что обычно попадает лишним

  • кастомные типы записей, которые используются только внутри админки;
  • медиа-вложения, если у них нет самостоятельной ценности;
  • таксономии с пустыми или техническими архивами;
  • страницы пагинации, которые не нужны в индексации;
  • служебные записи плагинов, которые выводятся как публичные.

Если вы используете SEO-плагин, он может генерировать собственный sitemap и иметь отдельные переключатели. Если нет — в WordPress с 5.5+ есть встроенная XML sitemap-функциональность, и её тоже можно настраивать через фильтры.

Диагностика: что именно нужно отключить

Сначала посмотрите, какие sitemap реально отдаются сайтом. Обычно это /wp-sitemap.xml в ядре WordPress или sitemap, который генерирует SEO-плагин. Откройте карту сайта в браузере и проверьте, какие разделы там есть: посты, страницы, CPT, таксономии, авторы, вложения. Если лишний раздел виден уже на верхнем уровне, его проще убрать сразу, чем потом чистить отдельные URL.

Полезно проверить и настройки самих типов записей. Для публичного типа записи WordPress включает его в sitemap только если он доступен для фронтенда и не скрыт фильтрами. Если CPT нужен только для внутренней логики, у него часто стоит 'public' => false или 'publicly_queryable' => false. Но этого недостаточно, если тип уже зарегистрирован как публичный и попадает в sitemap через плагин.

Мини-чек-лист перед правками

  • определите, кто генерирует sitemap: ядро WordPress или SEO-плагин;
  • составьте список лишних типов записей и таксономий;
  • проверьте, не используется ли этот URL во внутренних ссылках;
  • сохраните резервную копию файла, если правите код темы или плагина;
  • после изменений очистите кеш, если он есть на сайте или на сервере.

Способ 1: отключить тип записи из встроенного sitemap WordPress

Если sitemap генерирует ядро WordPress, можно исключить конкретный тип записи через фильтр wp_sitemaps_post_types. Это самый прямой способ, когда нужно убрать, например, portfolio, event или любой технический CPT.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['portfolio'] );
    unset( $post_types['event'] );

    return $post_types;
} );

Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin, если вы не хотите зависеть от темы. Для продакшена mu-plugin обычно надёжнее: он не отключится после смены темы и не потеряется при обновлении.

Как убрать таксономию из sitemap

Для таксономий используется фильтр wp_sitemaps_taxonomies. Это полезно, если в sitemap попадают технические рубрики или пустые таксономии, которые не нужны в поиске.

<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    unset( $taxonomies['product_cat'] );

    return $taxonomies;
} );

Здесь важно не путать отключение sitemap и запрет индексации. Если таксономия не должна индексироваться вообще, одного удаления из sitemap мало: страницы могут попасть в индекс через внутренние ссылки. Но если задача именно в чистке карты сайта, этого фильтра достаточно.

Способ 2: если sitemap делает SEO-плагин

У популярных SEO-плагинов логика своя. Обычно проще отключить нужный тип записи в настройках самого плагина, чем лезть в код. Это безопаснее для редактора и быстрее для поддержки. Но если нужен точечный контроль, смотрите документацию конкретного плагина: у него могут быть собственные фильтры и настройки для sitemap.

ПодходКогда подходитПлюсыМинусы
Настройки плагинаЕсли sitemap генерирует SEO-плагинБез кода, проще поддерживатьНе всегда есть точечная гибкость
Фильтры WordPressВстроенный sitemap ядраТочно и предсказуемоНужно редактировать код
Отключение типа записиТехнический CPT не нужен публичноУбирает проблему в корнеМожет повлиять на фронтенд, если тип уже используется

Если вы используете плагин для SEO и хотите дополнительно чистить дубли, служебные архивы и лишние URL, имеет смысл смотреть в сторону инструментов, где это собрано в одном месте. Например, у Clearfy Pro есть функции для удаления дублей и технической чистки сайта: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, кто именно генерирует sitemap, иначе можно искать не в том месте.

Способ 3: скрыть конкретный тип записи на уровне регистрации CPT

Если вы сами регистрируете кастомный тип записи, лучше сразу задать его поведение корректно. Для внутренних сущностей, которые не должны светиться в sitemap, не делайте их публичными без необходимости. Пример ниже показывает тип записи, который доступен в админке, но не предназначен для публичного обхода.

<?php
register_post_type( 'internal_note', array(
    'label'               => 'Internal notes',
    'public'              => false,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_rest'        => false,
    'exclude_from_search' => true,
    'has_archive'         => false,
) );

Такой подход лучше, чем потом вычищать URL из sitemap постфактум. Но если тип уже работает на сайте и менять его публичность нельзя, используйте фильтр sitemap, а не ломайте существующую логику.

Проверка результата после внедрения

После правок не ограничивайтесь визуальной проверкой страницы sitemap в браузере. Нужно убедиться, что исключённый тип действительно исчез из XML и не отдаётся через старые кеши.

  1. Откройте sitemap в браузере и проверьте, что раздела больше нет.
  2. Если есть кеш-плагин или серверный кеш, очистите его.
  3. Проверьте исходный XML через view-source: или curl.
  4. Убедитесь, что URL из исключённого типа не появляются в новых sitemap-файлах.
  5. В Search Console отправьте sitemap на повторную проверку, если это нужно по процессу.

Для быстрой проверки можно использовать curl:

curl -s https://example.com/wp-sitemap.xml | grep -n "portfolio\|event\|post_tag"

Если команда ничего не выводит, значит нужный фрагмент в текущем ответе отсутствует. Но помните: если сайт отдаёт sitemap через кеш или CDN, проверять нужно именно актуальную версию после очистки кеша.

Частые ошибки и как их исправить

Удалили не тот тип записи

Ошибка встречается, когда в коде указывают slug типа записи не из регистрации, а из URL-структуры или названия в админке. Проверьте реальный ключ CPT в коде регистрации или в плагине, который его создаёт.

Смотрят только на sitemap, но не на внутренние ссылки

Если URL всё ещё есть в меню, хлебных крошках, блоках или в архиве, поисковик может найти его и без sitemap. В таком случае исключение из карты сайта решает только часть задачи.

Проверяют старую версию из кеша

После изменения фильтров sitemap может какое-то время отдаваться из кеша. Это особенно заметно на сайтах с CDN или page cache. Очистка кеша — обязательный шаг, иначе кажется, что код не работает.

Путают sitemap и robots.txt

Закрыть URL в robots.txt и убрать его из sitemap — это разные задачи. Robots.txt не удаляет уже известные поисковику страницы из индекса, а только ограничивает обход. Для чистки карты сайта нужен именно фильтр или настройка генератора sitemap.

Безопасность и производительность

Если вы вносите изменения в functions.php, делайте это в дочерней теме или вынесите код в отдельный mu-plugin. Это снижает риск потерять правку при обновлении темы. Для сайта с несколькими средами лучше хранить такой код в репозитории, а не править вручную на продакшене.

Не ставьте несколько SEO-плагинов одновременно, если каждый из них умеет генерировать sitemap. Два источника карт сайта создают путаницу: один файл может быть отключён, а второй — продолжать отдавать лишние URL. Сначала определите единственный источник sitemap, потом настраивайте исключения.

Если задача не ограничивается только sitemap и вам нужно системно убрать дубли, служебные архивы и лишние точки входа, иногда проще собрать это в одном инструменте, чем держать набор разрозненных правок. Но даже тогда полезно оставлять кодовые исключения для редких случаев, где нужен точный контроль.

В итоге логика простая: сначала выясняете, кто генерирует sitemap, потом точечно исключаете лишнее, затем проверяете результат по фактическому XML, а не по предположению. Это тот случай, где аккуратная настройка лучше, чем полное отключение карты сайта или ручная чистка на глаз.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать WPCheck для анализа загрузки изображений в WordPress
13.09.2026
Как найти и удалить неиспользуемые изображения в медиатеке WordPress
07.10.2026
Как использовать WP-Cron для запуска задач в WordPress без проблем
29.09.2026
Как удалить неиспользуемые таксономии в WordPress: практическое руководство
28.09.2026
Как почистить базу данных WordPress от старых 301 редиректов
13.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше