Как убрать дубли страниц из XML sitemap в WordPress

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

Задача здесь не в том, чтобы «выключить sitemap», а в том, чтобы оставить в нём только те URL, которые реально должны индексироваться. В WordPress это можно сделать через настройки SEO-плагина, фильтры ядра или точечные исключения в коде темы/плагина.

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

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

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

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

Если в карте сайта есть URL с noindex, это не всегда ошибка, но обычно это признак несогласованной настройки: одна часть сайта говорит поисковику «не индексируй», а другая — «вот этот URL важен». Лучше привести логику к одному правилу.

Какие URL обычно нужно исключать

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

Тип URLОставлять в sitemapКомментарий
Записи и страницыДаЕсли контент уникальный и открыт к индексации
Архивы автораОбычно нетОсобенно если автор один и архив дублирует блог
ТегиЗависитОставляйте только если теги реально ведут трафик и заполнены
Медиа-вложенияЧаще нетОбычно это тонкие страницы без пользы
Пагинация архивовОбычно нетЕсли это не отдельная стратегия индексации
Служебные страницыНетПоиск, корзина, личный кабинет, thank you page

Как убрать дубли через SEO-плагин

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

Что искать в настройках

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

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

Для комплексной чистки сайта и удаления дублей иногда удобнее использовать Clearfy Pro, если он уже есть в стеке. Но даже в этом случае важно не полагаться на один чекбокс: сначала определите, что именно попадает в sitemap лишним.

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

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

Исключить вложения из sitemap

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

    return $post_types;
} );

Этот вариант работает с нативным sitemap WordPress. Если у вас sitemap генерирует SEO-плагин, его фильтры будут другими, и править нужно именно их, а не ядро.

Убрать конкретную таксономию

<?php
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    $exclude = array( 'post_tag' );

    foreach ( $exclude as $taxonomy ) {
        if ( isset( $taxonomies[ $taxonomy ] ) ) {
            unset( $taxonomies[ $taxonomy ] );
        }
    }

    return $taxonomies;
} );

Такой подход удобен, если теги на сайте не несут самостоятельной ценности. Но если теги уже ранжируются и дают трафик, сначала проверьте их в Search Console и только потом исключайте.

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

<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    $exclude = array( 'product', 'portfolio' );

    foreach ( $exclude as $post_type ) {
        if ( isset( $post_types[ $post_type ] ) ) {
            unset( $post_types[ $post_type ] );
        }
    }

    return $post_types;
} );

Этот код уместен, если кастомный тип записи существует только для внутренней структуры сайта или дублирует основной контент. Если тип записи нужен для пользователей, но не для поиска, дополнительно проверьте мета-теги noindex и каноникал.

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

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

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

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

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

  • сравнить старую и новую версию sitemap;
  • проверить статус URL в инспекторе;
  • посмотреть, не появились ли ошибки в отчёте по страницам;
  • убедиться, что в sitemap остались только канонические адреса без параметров.

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

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

Отключили не тот тип URL

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

Правят sitemap вручную, а он генерируется заново

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

Смешивают noindex и sitemap без логики

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

Не учитывают кастомные плагины и темы

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

Что делать, если sitemap генерирует не WordPress, а SEO-плагин

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

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

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

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

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

Когда карта сайта очищена, поисковику проще понять структуру сайта, а вам — проще контролировать, что именно вы отдаёте в индекс. Это как раз тот случай, где точечная настройка полезнее, чем попытка «починить SEO» одной кнопкой.

Как ускорить загрузку изображений в WordPress с помощью lazy load и оптимизации
20.09.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
26.09.2026
Как создать автоматический импорт данных из Excel в WordPress с примерами кода
27.09.2026
Как закрыть от индексации архивы рубрик в WordPress
02.10.2026
Как отключить заголовок X-Powered-By в WordPress
15.09.2026