Если сайт на WordPress начал отдавать в sitemap лишние URL — архивы, служебные страницы, вложения, тестовые записи или дубли таксономий — поисковик получает сигнал индексировать то, что индексировать не нужно. На небольших сайтах это часто незаметно, но на живом проекте sitemap быстро превращается в список мусора, который мешает обходу и размывает приоритеты.
Ниже разберём, как диагностировать проблему, какие варианты исправления реально работают в WordPress, как проверить результат и где чаще всего ошибаются.
Когда sitemap становится проблемой
Открытый XML sitemap сам по себе не ошибка. Проблема начинается, когда в нём появляются URL, которые не должны участвовать в поиске:
- служебные страницы темы или плагинов;
- архивы автора на сайтах с одним редактором;
- страницы пагинации, если они не несут ценности;
- вложения медиафайлов как отдельные страницы;
- черновики, приватные записи, тестовые рубрики;
- дубли записей из-за нескольких SEO-плагинов или кастомного кода.
Если sitemap формируется несколькими источниками одновременно, например ядром WordPress и SEO-плагином, можно получить пересечение списков или неожиданные URL в индексе. Поэтому сначала важно понять, кто именно генерирует карту сайта.
Диагностика: кто отдаёт sitemap и что в нём лишнее
В WordPress sitemap может отдавать ядро, SEO-плагин или кастомная реализация темы. Проверка начинается с простого: откройте /wp-sitemap.xml и посмотрите, есть ли там стандартная карта сайта ядра. Если установлен SEO-плагин, проверьте его собственный sitemap, например /sitemap_index.xml у Yoast SEO или аналогичный индекс у других решений.
Что смотреть в первую очередь
- есть ли в sitemap URL с параметрами, пагинацией или служебными путями;
- попадают ли в карту сайта вложения изображений как отдельные страницы;
- не дублируются ли одни и те же записи в нескольких sitemap;
- не включены ли в индекс таксономии без контента;
- не отдаются ли закрытые разделы через кастомный код.
Полезно сравнить sitemap с фактической структурой сайта. Если в админке вы видите 200 записей, а sitemap содержит 1200 URL, значит в карту попали архивы, вложения или другие типы объектов, которые вы не планировали индексировать.
Как отключить лишние разделы в sitemap штатными средствами
Самый безопасный путь — сначала использовать настройки SEO-плагина, а уже потом добирать кодом то, чего не хватает. У разных плагинов логика отличается, но принцип одинаковый: отключить ненужные типы контента и таксономии, а не пытаться вручную править XML.
| Подход | Что даёт | Компромисс |
|---|---|---|
| Настройки SEO-плагина | Быстро убирает лишние типы URL без кода | Не всегда хватает для нестандартных типов записей |
| Код в теме или mu-plugin | Точный контроль над sitemap и индексируемыми объектами | Нужно тестировать после обновлений |
| Комбинация настроек и кода | Лучший вариант для сложных сайтов | Требует аккуратной документации изменений |
Если у вас включён стандартный sitemap ядра WordPress, можно отключать отдельные типы записей и таксономии через объект WP_Sitemaps. Это полезно, когда нужно убрать, например, вложения или кастомный тип записей из карты сайта.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );
add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
if ( isset( $taxonomies['post_tag'] ) ) {
unset( $taxonomies['post_tag'] );
}
return $taxonomies;
} );Этот вариант не ломает генерацию sitemap целиком, а только убирает ненужные сущности. Если вам нужно скрыть конкретный тип записей, который создаёт тема или плагин, добавьте его имя в проверку и удалите из массива.
Как убрать отдельный тип записей из sitemap
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
unset( $post_types['review'] );
return $post_types;
} );Здесь review — пример кастомного post type. Реальное имя нужно взять из регистрации типа записей в коде темы или плагина. Если тип уже закрыт от индексации через noindex, но всё ещё попадает в sitemap, это лучше исправить именно на уровне sitemap, а не надеяться на один только мета-тег.
Если sitemap генерирует SEO-плагин
У популярных SEO-плагинов есть собственные настройки индексации типов контента. Обычно там можно отключить:
- архивы автора;
- архивы дат;
- медиа-вложения;
- отдельные таксономии;
- кастомные типы записей;
- страницы с пагинацией, если плагин это поддерживает.
Если вы используете Clearfy Pro, часть таких задач можно закрыть через его инструменты для чистки сайта и удаления дублей, но важно не включать всё подряд. Сначала проверьте, что именно выдаёт sitemap и какие URL реально попадают в индекс. Для сложных сайтов это экономит время лучше, чем ручная правка каждого шаблона. Ссылка на продукт: Clearfy Pro.
Пошаговое решение без лишнего риска
- Сделайте копию текущих настроек SEO-плагина и списка активных плагинов.
- Откройте sitemap и выпишите все URL, которые не должны индексироваться.
- Определите источник каждого лишнего URL: ядро WordPress, SEO-плагин, тема, кастомный код.
- Отключите ненужные типы записей и таксономии в настройках плагина, если это возможно.
- Если настроек недостаточно, добавьте точечный фильтр в
mu-pluginsили в дочернюю тему. - Проверьте, что sitemap обновился, а лишние URL исчезли.
- Отправьте обновлённый sitemap в Google Search Console и дождитесь переобхода.
Для точечных изменений лучше использовать mu-plugin, а не править functions.php активной темы. Тогда настройка не исчезнет при смене темы и будет проще сопровождаться.
<?php
/**
* Plugin Name: Sitemap cleanup
*/
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
foreach ( array( 'attachment', 'review' ) as $type ) {
if ( isset( $post_types[ $type ] ) ) {
unset( $post_types[ $type ] );
}
}
return $post_types;
} );Как проверить, что решение сработало
После изменений не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что карта сайта действительно обновилась и поисковик видит уже новый набор URL.
- Откройте sitemap в браузере и проверьте, исчезли ли лишние разделы.
- Сравните дату и количество URL до и после правки.
- Проверьте ответ сервера: sitemap должен отдавать
200 OK, а не редирект или ошибку. - В Google Search Console отправьте sitemap повторно и посмотрите отчёт по страницам.
- Если URL ещё остаются в индексе, проверьте, не лежат ли на них внешние ссылки или старые внутренние ссылки.
Если вы отключили вложения из sitemap, но они всё ещё индексируются, это не значит, что настройка не сработала. Скорее всего, поисковик уже знает эти URL из старых ссылок или из старой версии sitemap. В таком случае нужно дождаться переобхода и убрать внутренние ссылки на эти страницы.
Частые ошибки и как их исправить
Отключили sitemap целиком вместо лишнего раздела
Такое часто случается, когда пытаются решить проблему через robots.txt или через запрет индексации всего сайта. В результате поисковик теряет полезные URL. Исправление простое: возвращайте sitemap, но убирайте только ненужные типы записей и таксономии.
Скрыли URL в robots.txt, но оставили их в sitemap
Это плохая комбинация. Поисковик видит конфликт: URL есть в карте сайта, но доступ к нему запрещён. Лучше сначала убрать URL из sitemap, а затем уже решать, нужен ли запрет в robots.txt вообще.
Использовали два SEO-плагина одновременно
Если один плагин генерирует sitemap, а второй тоже пытается управлять индексацией, легко получить дубли или конфликт настроек. Оставьте один источник управления sitemap и проверьте, не создаёт ли тема собственные XML-выгрузки.
Правили файл темы напрямую
После обновления темы правка исчезает. Для таких задач используйте дочернюю тему или mu-plugin. Это особенно важно, если сайт поддерживается несколькими людьми и изменения должны быть воспроизводимыми.
Практические советы по безопасности и производительности
Sitemap сам по себе не тяжёлый, но на больших сайтах его генерация может создавать лишнюю нагрузку, если в карту попадают тысячи ненужных URL. Чем меньше мусора в sitemap, тем проще поисковику обходить сайт и тем меньше работы у сервера при генерации XML.
- не добавляйте в sitemap то, что точно не должно индексироваться;
- не генерируйте карту сайта отдельным кастомным скриптом без необходимости;
- храните точечные фильтры в отдельном mu-plugin;
- после обновлений SEO-плагина перепроверяйте sitemap вручную;
- если сайт большой, следите за логами ответов 404 и 5xx на URL из sitemap.
Если вам нужно не только чистить sitemap, но и системно убирать дубли, служебные страницы и лишние элементы интерфейса, удобнее собрать это в одном наборе настроек, чем держать разрозненные правки по теме и плагинам. Но даже в этом случае сначала проверяйте, что именно меняется, а не включайте все опции подряд.
В рабочем процессе полезно держать короткий чек-лист перед публикацией изменений:
- проверен источник sitemap;
- убраны только лишние типы URL;
- не сломаны основные записи и страницы;
- sitemap отдаёт
200 OK; - обновлён отчёт в Search Console;
- нет конфликтов с другим SEO-плагином.
Если задача стоит именно в технической чистке WordPress-сайта, а не в разовой правке, лучше сразу фиксировать, какие типы контента должны попадать в sitemap, а какие — нет. Тогда при добавлении новых плагинов или кастомных post type вы не получите неожиданный мусор в индексации.