wpnews.ru wordpress wpnews.ru

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

Ситуация типовая: сайт уже работает на SEO-плагине, карта сайта генерируется автоматически, но в неё попадают не те URL. Чаще всего это служебные записи, внутренние типы контента, тестовые страницы, архивы, которые не должны участвовать в индексации, или контент, который вы закрываете вручную через noindex, но он всё равно остаётся в sitemap. В итоге поисковик видит противоречие: страница одновременно есть в карте сайта и помечена как нежелательная для индексации.

Ниже разберём, как убрать такие URL из XML sitemap в WordPress без ломки темы и без правки ядра. Покажу два рабочих подхода: через SEO-плагин и через код, если нужна точечная настройка для конкретного post type или таксономии.

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

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

Признаки, что нужно править XML sitemap

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

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

Диагностика: где именно генерируется sitemap

В WordPress XML sitemap может генерироваться самим ядром или SEO-плагином. Это важно, потому что способы исключения отличаются. Сначала проверьте, какой URL у карты сайта открыт на сайте:

  • /wp-sitemap.xml — встроенная карта сайта WordPress;
  • /sitemap_index.xml — чаще всего Yoast SEO, Rank Math или другой SEO-плагин;
  • отдельные файлы вроде /post-sitemap.xml, /page-sitemap.xml, /category-sitemap.xml.

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

Пошаговое решение через SEO-плагин

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

Что обычно можно отключить в интерфейсе

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

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

Как убрать отдельный тип контента из встроенного sitemap WordPress

Для встроенной карты сайта WordPress есть фильтр wp_sitemaps_post_types. Через него можно исключить нужный тип записи целиком. Это полезно, если у вас есть, например, внутренний тип news_source, landing или любой другой служебный контент.

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

    return $post_types;
} );

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

Если нужно убрать конкретную таксономию

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

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

    return $taxonomies;
} );

Важно: удаление таксономии из sitemap не закрывает её от индексации автоматически. Если архивы тегов или рубрик должны быть закрыты, это отдельная настройка.

Как исключить только одну запись или страницу

Если проблема не в типе контента, а в конкретной странице, используйте фильтр wp_sitemaps_posts_query_args. Он позволяет изменить запрос, который WordPress использует для построения списка URL.

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

    // Исключаем конкретную запись по ID.
    $args['post__not_in'] = array( 123, 456 );

    return $args;
}, 10, 2 );

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

Сравнение подходов

Способ Когда использовать Плюсы Минусы
Настройки SEO-плагина Нужно убрать целый тип контента или таксономию Без кода, быстро, безопасно Не всегда можно исключить одну запись
Фильтры WordPress Нужна точечная настройка Гибко, работает без сторонних зависимостей Требует аккуратности и тестирования
robots.txt Нужно ограничить обход, но не генерацию sitemap Просто добавить правило Не решает проблему лишних URL в sitemap

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

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

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

  • Откройте /wp-sitemap.xml или /sitemap_index.xml и убедитесь, что нужный раздел исчез.
  • Проверьте отдельный sitemap-файл, например /post-sitemap.xml или /page-sitemap.xml.
  • Посмотрите исходный код страницы sitemap, если плагин кэширует вывод.
  • Очистите кэш плагина и серверный кэш, если они используются.

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

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

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

Это нормальная ситуация, если страница уже была в индексе. Исключение из sitemap не удаляет URL из поиска автоматически. Для этого нужен noindex, удаление внутренних ссылок и, при необходимости, корректный редирект или статус 410.

Правите не тот sitemap

Иногда на сайте одновременно активен встроенный sitemap WordPress и sitemap от SEO-плагина. Тогда вы меняете одну карту, а поисковик видит другую. Проверьте, какой файл указан в robots.txt и какой sitemap отправлен в Search Console.

Ставите запрет в robots.txt вместо исключения из sitemap

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

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

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

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

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

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

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

Когда лучше не трогать sitemap кодом

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

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

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

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее