WordPress Notes WP-team

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

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

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

Когда sitemap в WordPress начинает вредить

Проблема обычно проявляется не в одном месте. Чаще всего вы видите сразу несколько симптомов:

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

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

Откройте XML sitemap в браузере и посмотрите, какие типы URL туда попали. Если сайт использует SEO-плагин, проверьте его настройки карт сайта отдельно от настроек robots.txt и noindex: это разные механизмы, и один не заменяет другой.

Полезно сравнить три вещи:

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

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

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

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

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

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

Пошаговое решение: как убрать лишние URL из sitemap

Ниже — рабочий подход, который не ломает сайт и позволяет контролировать результат. Сначала определяем, что именно исключать, затем вносим изменения и проверяем sitemap повторно.

Вариант 1. Настроить SEO-плагин

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

Плюс этого варианта в том, что изменения не слетят после обновления. Минус — не всегда можно тонко управлять каждым URL, если логика плагина ограничена.

Вариант 2. Исключить типы записей через код

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    // Убираем служебные типы, которые не должны попадать в sitemap.
    unset( $post_types['attachment'] );
    unset( $post_types['revision'] );
    unset( $post_types['nav_menu_item'] );

    return $post_types;
} );

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

Вариант 3. Исключить отдельные таксономии

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

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

    return $taxonomies;
} );

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

Вариант 4. Убрать конкретные URL через фильтр sitemap entries

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

<?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Если нужно убрать типы записей или таксономииГибко, работает на уровне ядраТребует аккуратности и тестирования
Исключение отдельных URLЕсли проблема точечнаяМожно быстро убрать конкретные страницыНе решает системную причину дублей

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

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

  • Откройте sitemap в браузере и проверьте, исчезли ли лишние URL.
  • Проверьте, что важные записи и страницы по-прежнему присутствуют.
  • Если используется SEO-плагин, очистите кэш плагина и серверный кэш.
  • Посмотрите sitemap в Google Search Console и отправьте его повторно, если структура изменилась существенно.
  • Сравните количество URL до и после, но не делайте выводы только по цифрам — важнее состав списка.

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

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

Удалили из sitemap, но не закрыли от индексации

Если URL не должен индексироваться, одного исключения из sitemap мало. Поисковик может найти его по внутренним ссылкам. В таком случае нужно отдельно проверить meta robots, canonical и внутреннюю перелинковку.

Сломали sitemap после правки functions.php

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

Отключили полезные архивы

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

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

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

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

Если вы правите sitemap кодом, держите изменения в отдельном мини-плагине или mu-plugin. Так проще откатить правку и не потерять её при смене темы. Для крупных проектов это ещё и удобнее при передаче поддержки между разработчиками.

Не пытайтесь «почистить всё» одним фильтром без списка исключений. Сначала зафиксируйте, какие типы контента должны индексироваться, а какие нет. Это экономит время и снижает риск случайно убрать важные URL из карты сайта.

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

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

×
Прокачай свой WordPress!

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

Воспользоваться сейчас ⋙