wplock.ru wordpress wplock.ru

Как отключить генерацию просмотров в XML Sitemap WordPress

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

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

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

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

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

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

Что именно нужно исключать

Обычно в карту сайта не должны попадать:

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

Как проверить, откуда формируется XML Sitemap

В WordPress карта сайта может генерироваться ядром или SEO-плагином. Это принципиально важно: если у вас активен Yoast SEO, Rank Math или похожий плагин, править нужно их настройки, а не только код темы.

Проверьте по шагам:

  1. Откройте /wp-sitemap.xml в браузере. Если видите стандартную карту WordPress — работает ядро.
  2. Если адрес карты другой, например /sitemap_index.xml, значит её отдаёт SEO-плагин.
  3. Посмотрите исходный HTML или заголовки ответа, чтобы понять, не подменяет ли карту плагин кэширования или редиректов.

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

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

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

<?php
/**
 * Исключаем лишние типы записей и таксономии из XML Sitemap WordPress.
 */
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    // Убираем вложения из карты сайта.
    unset( $post_types['attachment'] );

    // Пример: отключить кастомный тип записи.
    // unset( $post_types['portfolio'] );

    return $post_types;
} );

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    // Убираем теги, если они не нужны в индексации.
    unset( $taxonomies['post_tag'] );

    // Пример: отключить служебную таксономию.
    // unset( $taxonomies['product_cat'] );

    return $taxonomies;
} );

Код можно добавить в дочернюю тему или в небольшой mu-plugin. Для боевого сайта mu-plugin надёжнее: он не зависит от смены темы.

Как убрать отдельные URL, а не целый тип записей

Если проблема не в типе записей, а в конкретных страницах, используйте фильтр wp_sitemaps_posts_query_args и исключайте записи по ID, статусу или мета-условию. Это полезно, когда в sitemap попадают тестовые страницы или старые дубли.

<?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 );

Такой вариант лучше, чем пытаться закрыть URL только через robots.txt. Robots.txt не удаляет адрес из карты сайта и не решает проблему источника генерации.

Если sitemap делает SEO-плагин: что настраивать

У SEO-плагинов логика отличается. Обычно там есть отдельные переключатели для:

  • медиа-страниц;
  • архивов автора;
  • таксономий;
  • отдельных типов записей;
  • noindex-страниц.

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

ПодходКогда использоватьПлюсМинус
Настройки плагинаЕсли sitemap генерирует SEO-плагинБезопасно и прозрачноНе всегда хватает гибкости
Код через фильтры WordPressЕсли используется стандартный sitemap ядраТочный контрольНужно аккуратно тестировать
Robots.txtТолько для дополнительного ограниченияБыстроНе убирает URL из sitemap

Пошаговая схема внедрения без лишнего риска

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

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

Проверка должна быть не только визуальной. Смотрите на три уровня:

  • Браузер — откройте sitemap и убедитесь, что лишний URL больше не присутствует.
  • Исходный XML — проверьте, что адреса исчезли именно из карты сайта, а не просто скрылись в интерфейсе.
  • Google Search Console — отправьте карту сайта на повторную обработку и посмотрите, уменьшилось ли число неподходящих URL в отчётах.

Если URL исчез из sitemap, но всё ещё индексируется, это уже отдельная задача: нужно работать с noindex, каноникалами и внутренними ссылками. Не пытайтесь лечить всё одним robots.txt.

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

Отключили URL в robots.txt, но он остался в sitemap

Это нормальная ситуация. Robots.txt не управляет генерацией карты сайта. Нужно менять источник sitemap — код или настройки плагина.

Удалили тип записей, но карта сайта не изменилась

Чаще всего виноват кэш. Очистите page cache, object cache и, если используется CDN, сбросьте и его. Убедитесь, что смотрите не старую копию XML.

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

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

Скрыли важные страницы вместе с мусором

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

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

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

Для стабильности:

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

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

Главная идея простая: сначала выясняете источник XML Sitemap, потом точечно убираете лишние типы записей или конкретные URL, а затем проверяете результат не только в браузере, но и в Search Console. Это надёжнее, чем пытаться «починить индексацию» одним универсальным переключателем.

×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙