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

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

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

Когда это действительно нужно

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

Типичные сценарии

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

Если проблема именно в индексации, а не в наличии URL как такового, сначала проверьте noindex, canonical и robots.txt. Sitemap сам по себе не «заставляет» страницу индексироваться, но он помогает поисковику быстрее находить URL. Поэтому убирать нужно осознанно.

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

Перед правкой полезно понять, какой именно источник добавляет лишние URL. В WordPress sitemap может формироваться ядром или SEO-плагином. Логика исключения у них разная.

Что проверить в первую очередь

  1. Откройте /wp-sitemap.xml или sitemap, который отдаёт SEO-плагин.
  2. Посмотрите, какой раздел содержит лишние URL: посты, страницы, CPT, таксономии, авторы.
  3. Проверьте, не создаёт ли лишние записи сторонний плагин или тема.
  4. Сравните sitemap с настройками публичности типа записи в админке.

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

Как отключить тип записей из XML sitemap через код

В ядре WordPress для sitemap есть фильтр wp_sitemaps_post_types. Он позволяет убрать нужный post type из списка, который попадает в карту сайта. Это рабочий вариант, если вы не хотите зависеть от настроек SEO-плагина или если плагин не даёт нужной гранулярности.

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

    // Можно убрать и несколько типов сразу.
    unset( $post_types['legacy_item'] );

    return $post_types;
} );

Код можно добавить в мини-плагин или в functions.php дочерней темы. Для боевого сайта мини-плагин предпочтительнее: меньше риск потерять правку при обновлении темы.

Если нужно исключить только отдельные записи

Иногда тип записей нужен в sitemap частично: например, большинство записей должны индексироваться, но часть — нет. Тогда удобнее фильтровать уже список URL, а не сам post type. Для ядра WordPress можно использовать wp_sitemaps_posts_query_args и исключить записи по ID, статусу или метаполю.

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' !== $post_type ) {
        return $args;
    }

    // Пример: исключаем записи с определённым мета-флагом.
    $args['meta_query'] = array(
        array(
            'key'     => '_exclude_from_sitemap',
            'compare' => 'NOT EXISTS',
        ),
    );

    return $args;
}, 10, 2 );

Такой подход полезен, если редакторы сами помечают записи как технические. Но важно понимать: sitemap и индексирование — не одно и то же. Если запись должна быть скрыта от поиска, дополнительно ставьте noindex на уровне SEO-плагина или шаблона.

Как сделать это в SEO-плагине

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

ПодходКогда подходитМинус
Настройки SEO-плагинаНужно быстро убрать целый тип записейЗависит от конкретного плагина и его интерфейса
Фильтр WordPressНужна точная логика и контроль в кодеНужно сопровождать код при изменениях темы/сайта
Комбинированный вариантЧасть исключений делается в плагине, часть — кодомСложнее документировать для команды

Если вы используете Clearfy Pro, имеет смысл сначала посмотреть, не решается ли задача через отключение лишних архивов, дублей и технических страниц в его SEO-настройках. Для некоторых проектов это быстрее, чем писать отдельный фильтр. Ссылка на продукт: Clearfy Pro.

Пошаговое решение без лишнего риска

Шаг 1. Зафиксируйте, что именно исключаете

Не начинайте с кода. Сначала составьте короткий список: какой post type, какие записи, по какому признаку. Это важно, потому что «убрать всё лишнее» часто превращается в случайное исключение нужного контента.

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

Шаг 2. Добавьте фильтр в мини-плагин

Если исключаете целый тип записей, используйте wp_sitemaps_post_types. Если только часть — фильтруйте запрос через wp_sitemaps_posts_query_args. Не смешивайте обе схемы без необходимости.

Шаг 3. Очистите кэш

После изменений сбросьте кэш страницы, объектный кэш и кэш CDN, если он есть. Иначе вы можете смотреть на старую версию sitemap и сделать ложный вывод, что фильтр не сработал.

Шаг 4. Проверьте карту сайта и статус URL

Откройте sitemap в браузере и убедитесь, что лишний раздел исчез. Затем проверьте несколько URL из исключённого типа: они должны либо оставаться доступными без попадания в sitemap, либо получать noindex, если это было вашей целью.

Как проверить, что решение сработало

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

  • лишний post type больше не отображается в /wp-sitemap.xml;
  • если используется SEO-плагин, его sitemap тоже не содержит нужный раздел;
  • URL по прямой ссылке открываются только если это допустимо по задаче;
  • в Search Console новый sitemap загружается без ошибок;
  • через несколько дней в отчётах не появляется рост мусорных URL из этого типа.

Для быстрой локальной проверки удобно посмотреть заголовки ответа и убедиться, что sitemap отдаётся без ошибок. Например, через curl -I https://example.com/wp-sitemap.xml. Если карта сайта генерируется динамически, важно проверить и время ответа: слишком тяжёлая генерация может тормозить админку и фронтенд.

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

Удалили из sitemap, но не закрыли от индексации

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

Сломали sitemap целиком

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

Исключили нужный контент по слишком широкому условию

Например, фильтрация по метаполю без проверки post type может убрать лишнее на других типах записей. Всегда ограничивайте условие конкретным типом, если логика относится только к нему.

Не учли кэш

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

Практические советы по безопасности и производительности

Не вносите правки в ядро и не редактируйте файлы плагина напрямую. Для таких задач лучше мини-плагин или дочерняя тема. Так вы не потеряете изменения при обновлении.

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

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

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

Как отключить XML sitemap для отдельных типов записей в WordPress без поломки индексации
02.09.2026
Как использовать хуки для автоматизации в WordPress: практическое руководство с примерами кода
17.12.2025
Как создать автоматический импорт изображений в WordPress с помощью кода
30.03.2026
Как создать собственный фильтровый плагин WordPress с примерами кода
05.01.2026
Как удалить и заблокировать удалённые пользователи WordPress с примерами кода
12.02.2026
×
Quizle
Получите больше лидов и увеличьте продажи!
-15%

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

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