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

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

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

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

Сначала стоит убедиться, что вы боретесь именно с картой сайта, а не с дублями в шаблоне или неправильной индексацией страниц. Откройте XML sitemap и проверьте, что именно туда попадает:

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

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

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

  • какой именно sitemap открывается: /wp-sitemap.xml или sitemap от SEO-плагина;
  • какие URL в нём лишние;
  • не закрыты ли эти же URL уже через noindex или canonical;
  • не используются ли они внутри сайта как навигационные страницы.

Штатный способ: отключить лишнее через настройки плагина

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

Подход Когда подходит Минус
Настройки плагина Если sitemap генерирует SEO-плагин и в нём есть переключатели для типов контента Зависит от конкретного плагина и его интерфейса
Код через фильтры WordPress Если нужен точечный контроль над встроенным sitemap или нестандартной логикой Нужно тестировать после обновлений темы и плагинов
Комбинированный вариант Если часть URL отключается в плагине, а часть — через код Легко запутаться и получить дубли настроек

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

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

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

Убираем кастомный тип записей из sitemap

Пример для functions.php дочерней темы или собственного мини-плагина. Здесь мы исключаем тип записи portfolio из карты сайта:

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    if ( isset( $post_types['portfolio'] ) ) {
        unset( $post_types['portfolio'] );
    }

    return $post_types;
} );

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

Убираем таксономию из sitemap

Если проблема в архиве рубрик, меток или кастомной таксономии, используйте фильтр для таксономий:

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    $exclude = array( 'post_tag', 'portfolio_category' );

    foreach ( $exclude as $taxonomy ) {
        if ( isset( $taxonomies[ $taxonomy ] ) ) {
            unset( $taxonomies[ $taxonomy ] );
        }
    }

    return $taxonomies;
} );

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

Отключаем отдельные записи по ID или по условию

Иногда нужно убрать не весь тип, а конкретные записи. Для встроенного sitemap это уже сложнее, но можно отфильтровать список объектов перед выводом. Пример ниже исключает записи с определёнными ID:

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 делает SEO-плагин: что искать в настройках

У разных плагинов логика отличается, но обычно вам нужны три группы настроек:

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

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

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

  1. Определите, кто генерирует sitemap: ядро WordPress или SEO-плагин.
  2. Составьте список лишних URL: типы записей, таксономии, архивы, отдельные страницы.
  3. Сначала отключите их штатно в настройках плагина, если это возможно.
  4. Если встроенного управления нет, добавьте фильтр в дочернюю тему или мини-плагин.
  5. Очистите кэш сайта и кэш CDN, если он используется.
  6. Проверьте sitemap в браузере и через Search Console.

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

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

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

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

curl -I https://example.com/wp-sitemap.xml

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

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

Отключили URL в sitemap, но они всё равно индексируются

Это нормально: sitemap — не единственный источник URL для поисковика. Если страница уже где-то есть во внутренних ссылках, в старых внешних ссылках или в истории индекса, она может оставаться в поиске. В таком случае нужно отдельно решить вопрос с noindex, canonical или удалением страницы.

Сломали sitemap после обновления темы

Чаще всего фильтр добавили в functions.php активной темы, а не дочерней. После обновления тема перезаписалась, и правка исчезла. Для стабильности используйте дочернюю тему или мини-плагин.

Скрыли важный раздел вместо технического

Это бывает, когда отключают таксономию целиком, не проверив, какие страницы она даёт. Перед удалением из sitemap посмотрите, есть ли у раздела трафик, входящие ссылки и реальная поисковая ценность.

Не очистили кэш

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

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

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

Если правок немного, достаточно такого каркаса плагина:

<?php
/**
 * Plugin Name: Sitemap Tweaks
 */

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['portfolio'] );
    return $post_types;
} );

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

Когда лучше не отключать, а доработать

Если у страницы есть поисковый потенциал, но она выглядит слабой, не спешите убирать её из sitemap. Иногда правильнее:

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

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

WooCommerce: автоматическое изменение цен по акциям с помощью кода
13.09.2026
Как отключить архив авторов в WordPress без потери SEO и дублей
29.09.2026
Автоматическое удаление товаров в WooCommerce по дате публикации
01.10.2026
Как избежать проблем с перемещением медиаменеджера в WordPress
13.09.2026
WooCommerce: автоматическое изменение цен по акциям с помощью кода
02.10.2026

Расскажем где можно скачать WordPress с официального сайта на русском языке, где скачать и купить премиум плагины и темы на русском.