wpwebsite.ru wordpress WPWebSite

Как исключить страницы из XML sitemap в WordPress

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

Когда sitemap нужно чистить

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

Типичные симптомы

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

Диагностика: где именно появляется лишний URL

Сначала проверьте, кто формирует sitemap. В WordPress это может быть встроенная карта сайта ядра, Yoast SEO, Rank Math, All in One SEO или другой плагин. Подход к исключению зависит от источника, поэтому не стоит сразу править код темы.

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

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

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

Способ 1: исключить URL через SEO-плагин

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

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

ПодходКогда подходитМинус
Настройки SEO-плагинаНужно убрать целый тип контента или архивНе всегда можно исключить один URL точечно
Код через фильтрНужно убрать конкретные записи или вложенияТребует аккуратной проверки после обновлений
Ручное редактирование XMLПочти никогда не нужноСломается при следующей генерации

Способ 2: исключить конкретные записи через код

Если карта сайта строится ядром WordPress или вам нужно убрать несколько конкретных записей, используйте фильтр wp_sitemaps_posts_query_args. Он позволяет исключить записи по ID на уровне запроса, который формирует sitemap.

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

    $exclude_ids = array( 12, 34, 56 );

    if ( empty( $args['post__not_in'] ) ) {
        $args['post__not_in'] = array();
    }

    $args['post__not_in'] = array_merge( $args['post__not_in'], $exclude_ids );

    return $args;
}, 10, 2 );

Этот вариант полезен, если у вас есть служебные статьи, тестовые страницы или записи, которые не должны попадать в sitemap, но удалять их из базы вы не хотите. Код лучше размещать в небольшом mu-plugin или в отдельном плагине проекта, а не в теме.

Если нужно убрать вложения из sitemap

Встроенная карта сайта WordPress может включать медиа-вложения как отдельный тип. Если это не нужно, проще отключить их на уровне генерации. Для ядра WordPress можно использовать фильтр wp_sitemaps_post_types и убрать тип attachment.

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );
    return $post_types;
} );

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

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

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

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

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

Проверка должна быть не визуальной, а технической. Откройте sitemap по адресу, который использует ваш сайт, и убедитесь, что нужный URL исчез. Затем проверьте исходный код страницы sitemap или конкретного sitemap-файла: там не должно быть старой ссылки.

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

Мини-чек-лист проверки

  • URL отсутствует в XML sitemap;
  • страница не возвращается в sitemap после очистки кэша;
  • нет конфликта между noindex и картой сайта;
  • в Search Console отправлен актуальный sitemap;
  • если использовался код, он лежит не в теме, а в отдельном месте, которое не потеряется при обновлении.

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

Отключили страницу от индексации, но не убрали из sitemap

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

Правят XML вручную

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

Добавили код в тему

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

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

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

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

Не перегружайте sitemap лишними типами контента. Чем меньше в нём мусора, тем проще поисковику обходить сайт и тем меньше шанс, что вы сами забудете про служебный URL. Но не удаляйте из карты сайта важные страницы только потому, что они кажутся «второстепенными» — если страница должна индексироваться и приносить трафик, она должна оставаться в sitemap.

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

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше