wptavern.ru wordpress wptavern.ru

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

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

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

Когда нужно править XML sitemap, а не robots.txt

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

Исключать из sitemap имеет смысл в таких сценариях:

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

Диагностика: откуда именно берутся лишние URL

Сначала нужно понять, кто генерирует sitemap. В WordPress это может быть:

  • встроенный XML sitemap ядра;
  • SEO-плагин, который переопределяет карту сайта;
  • отдельный плагин для sitemap;
  • кастомный код в теме или mu-plugin.

Проверьте сам адрес карты сайта. В стандартном WordPress это обычно /wp-sitemap.xml. У SEO-плагинов адрес может быть другим, например /sitemap_index.xml. Откройте sitemap в браузере и посмотрите, какие типы URL там перечислены: записи, страницы, рубрики, авторы, медиа.

Если нужно быстро понять, какие объекты вообще доступны в WordPress, удобно посмотреть типы записей и таксономии через WP-CLI:

wp post-type list --fields=name,label,public,show_in_rest
wp taxonomy list --fields=name,label,public,show_ui

Это не покажет sitemap напрямую, но помогает понять, какие сущности сайт вообще публикует и что потенциально может попадать в карту.

Как исключить URL через SEO-плагин

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

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

Что обычно можно отключить

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

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

Исключение из sitemap через код

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

Ниже пример, как убрать из XML sitemap вложения и один служебный кастомный тип записей. Код лучше добавлять в mu-plugin или в дочернюю тему, а не в основной файл темы.

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

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['attachment'] );
    unset( $post_types['my_internal_post_type'] );

    return $post_types;
} );

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );

    return $taxonomies;
} );

Если нужно убрать не весь тип, а только отдельные записи, тогда фильтр уже другой: wp_sitemaps_posts_query_args. Он позволяет изменить запрос, который собирает элементы карты сайта для конкретного типа записей.

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

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

Сравнение подходов: плагин, код, ручная правка

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

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

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

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

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

Минимальный набор проверки:

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

Если у вас есть доступ к командной строке, можно быстро проверить заголовки ответа:

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

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

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

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

Это самая частая ошибка. Поисковик видит противоречие: вы запрещаете обход, но одновременно предлагаете адрес в карте сайта. Исправление простое — уберите URL из sitemap, а не только из robots.txt.

Скрыли страницу через noindex, но она осталась в карте сайта

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

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

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

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

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

Сломали sitemap для нужных страниц

Иногда при исключении таксономии или post type вместе с лишним контентом исчезают и полезные URL. Поэтому не отключайте типы записей «на глаз» — сначала проверьте, что именно в них лежит.

Что стоит учесть для безопасности и производительности

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

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

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

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

×

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

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

пишет статьи

готовит SEO

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

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