wpnews.ru wordpress wpnews.ru

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

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

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

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

Сначала проверьте, что именно попало в карту сайта и откуда оно берётся. Не всегда виноват WordPress: иногда URL добавляет плагин, тема или старый SEO-модуль, который остался после миграции.

Что смотреть в первую очередь

  • открывается ли /wp-sitemap.xml или sitemap от SEO-плагина;
  • есть ли в карте сайта URL с /attachment/, /page/, /author/, /tag/ или служебные архивы;
  • совпадает ли список URL в sitemap с тем, что вы ожидаете видеть в индексации;
  • не дублируются ли одни и те же записи в нескольких XML-файлах;
  • не остались ли в sitemap старые типы записей после отключения плагина.

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

Как убрать URL из стандартной XML sitemap WordPress

Начиная с WordPress 5.5, в ядре есть встроенная XML sitemap. У неё есть фильтры, через которые можно исключать отдельные типы контента, таксономии или конкретные записи. Это безопаснее, чем править ядро или отключать sitemap целиком.

Исключаем конкретный тип записей

Если в sitemap не должны попадать, например, вложения или кастомный тип news_draft, используйте фильтр wp_sitemaps_post_types.

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

    return $post_types;
} );

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

Убираем отдельные записи по ID

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

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 101, 205, 309 );
    }

    return $args;
}, 10, 2 );

Такой подход удобен для тестовых материалов, старых новостей или страниц, которые уже заменены новыми URL, но ещё не удалены из базы.

Отключаем ненужные таксономии

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

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

    return $taxonomies;
} );

Это не заменяет настройку noindex, но помогает убрать лишние URL именно из карты сайта.

Если sitemap генерирует SEO-плагин

У Yoast SEO, Rank Math и похожих решений логика своя. В этом случае фильтры ядра WordPress не помогут, потому что карта сайта строится не встроенным механизмом, а плагином. Сначала проверьте настройки самого плагина: часто там уже есть переключатели для архивов авторов, тегов, медиа-страниц и отдельных типов записей.

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

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

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

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

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

Проверка должна быть не «открылась страница», а именно «нежелательные URL исчезли из карты сайта и не ломают остальные разделы». Смотрите на результат в браузере и в инструментах для вебмастеров.

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

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

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

Правят не ту карту сайта

Пользователь меняет фильтры ядра WordPress, а sitemap по-прежнему отдаёт SEO-плагин. В этом случае код работает, но не влияет на итоговый XML. Решение простое: сначала определите источник генерации.

Пытаются убрать URL через robots.txt

Это не удаляет ссылку из sitemap. Robots.txt ограничивает обход, но не чистит XML-карту. Если цель — убрать URL из sitemap, править нужно генератор карты сайта.

Удаляют слишком много

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

Забывают про кэш

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

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

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

Не храните такие правки в основной теме, если сайт активно развивается. Лучше вынести код в небольшой mu-plugin или в отдельный функциональный плагин. Тогда при смене темы sitemap не сломается.

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

Для сайтов с большим количеством дублей и служебных архивов имеет смысл сначала навести порядок в SEO-настройках, а уже потом править sitemap кодом. В таких задачах полезны инструменты, которые помогают чистить дубли и управлять индексируемыми разделами, например Clearfy Pro: https://wpshop.ru/plugins/clearfy.

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее