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

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

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

Когда это вообще нужно

Сценарий обычно один из трёх:

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

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

Диагностика: что именно попадает в sitemap

В WordPress с ядром 5.5+ XML sitemap генерируется встроенно. Сначала проверьте, какой именно тип записей нужно исключить.

  1. Откройте /wp-sitemap.xml.
  2. Найдите раздел с нужным типом записей или таксономией.
  3. Проверьте, действительно ли там есть лишние URL, а не только отдельные страницы.

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

Что проверить до правок

  • какой тип контента создаёт лишние URL: post, page, кастомный post_type или таксономия;
  • не используется ли этот тип в публичной части сайта;
  • не завязан ли он на внутренние ссылки, которые должны остаться доступными;
  • не закрыт ли он уже через noindex и каноникал отдельно от sitemap.

Решение через код: убрать тип записей из sitemap

Для встроенного sitemap в WordPress есть фильтр wp_sitemaps_post_types. Он позволяет удалить ненужный тип записей из списка, который попадает в карту сайта.

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    // Убираем служебный CPT из sitemap.
    if ( isset( $post_types['internal_note'] ) ) {
        unset( $post_types['internal_note'] );
    }

    return $post_types;
} );

Замените internal_note на реальный slug вашего типа записей. После этого WordPress перестанет включать этот тип в XML sitemap.

Если нужно убрать не весь тип, а только отдельные записи

Тогда фильтра по типу недостаточно. Нужно исключать конкретные элементы из списка URL. Для этого подходит wp_sitemaps_posts_query_args или фильтрация по ID на уровне запроса. Пример ниже убирает записи с определёнными ID из sitemap для типа post.

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    return $args;
}, 10, 2 );

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

Решение через плагин: когда код не хочется поддерживать

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

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

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

Пошаговое внедрение без сюрпризов

  1. Определите тип записей или конкретные ID, которые нужно убрать.
  2. Сделайте бэкап или хотя бы сохраните текущую версию файла, куда вносите правку.
  3. Добавьте фильтр в дочернюю тему или mu-plugin.
  4. Очистите кеш, если на сайте есть page cache, object cache или CDN.
  5. Откройте /wp-sitemap.xml и проверьте структуру.
  6. Если sitemap отдаётся через SEO-плагин, проверьте, не генерирует ли он собственную карту сайта поверх встроенной.

Как проверить результат

Проверка должна быть не визуальной, а технической.

  • Откройте /wp-sitemap.xml и убедитесь, что нужного раздела больше нет.
  • Если остались вложенные sitemap-файлы, проверьте их напрямую по URL.
  • В Search Console отправьте sitemap повторно и посмотрите, исчезли ли лишние URL из обнаруженных файлов.
  • Проверьте исходный код страницы sitemap: там не должно быть ссылок на исключённый тип записей.

Если URL всё ещё видны, чаще всего причина в одном из двух: правка внесена не туда, либо sitemap генерирует не ядро WordPress, а SEO-плагин.

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

Правку добавили в родительскую тему

При обновлении тема перезапишется, и исключение из sitemap исчезнет. Для таких вещей используйте дочернюю тему или mu-plugin.

Отключили тип записей, но забыли про кеш

На сайтах с кешированием sitemap может отдаваться старой версией. После правки очистите серверный кеш, кеш плагина и, если есть, CDN.

Путают sitemap и robots.txt

Запрет в robots.txt не убирает URL из самой карты сайта. Поисковик всё равно увидит ссылку, если она опубликована в sitemap.

Отключили не тот генератор sitemap

Если установлен SEO-плагин, он может полностью заменить встроенный sitemap WordPress. Тогда фильтры ядра не помогут, и нужно править настройки самого плагина.

Удалили тип записей из sitemap, но оставили открытые архивы

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

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

Сам по себе sitemap не тяжёлый, но на больших сайтах его генерация может добавлять лишнюю нагрузку, если в карту сайта попадают десятки тысяч ненужных URL. Убирая служебные типы записей, вы уменьшаете объём карты и снижаете шум для краулеров.

Если правите кодом, не вставляйте его в произвольный файл темы без контроля версий. Лучше хранить такие изменения отдельно: в mu-plugin или в небольшом кастомном плагине. Тогда их проще переносить между окружениями и не потерять при обновлении темы.

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

Как закрыть от индексации страницы поисковых запросов в WordPress
03.09.2026
Как отключить дубли архивов tag, author и date в WordPress без поломки индексации
28.08.2026
Как отключить XML sitemap в WordPress для отдельных типов записей
08.09.2026
Как отключить XML-RPC в WordPress без поломки мобильных приложений и внешних сервисов
31.08.2026
×
Quizle
Получите больше лидов и увеличьте продажи!
-15%

на премиум плагин WordPress

Получить скидку ⋙