Если в XML-карте сайта появляются attachment-страницы, поисковик получает лишние URL: медиа-страницы без ценности, дубли заголовков и иногда пустые шаблоны. Само по себе это не всегда критично, но на больших сайтах такие записи размывают карту сайта и усложняют контроль индексации.
Ниже разберём, как понять, что проблема именно в sitemap, чем отличается отключение attachment из карты сайта от полного закрытия страниц, и как проверить результат без гадания по отчетам.
Когда это действительно проблема
Не каждый сайт обязан убирать attachment из sitemap. Если у вас медиа-страницы реально используются как посадочные, например для портфолио или каталогов изображений, подход будет другим. Но в типичном WordPress-сайте attachment-страницы не несут самостоятельной ценности и только создают шум.
Признаки, что sitemap нужно чистить
- в Search Console в отчёте по страницам есть URL вида
/attachment/или медиа-страницы с низкой ценностью; - в XML-карте сайта много URL, которые не должны участвовать в индексации;
- после публикации нового контента поисковик тратит время на обход служебных страниц вместо важных;
- в теме или плагине SEO attachment-страницы не закрыты от индексации, хотя вам это не нужно.
Диагностика: где именно появляется attachment
Сначала проверьте, кто формирует sitemap. В WordPress это обычно SEO-плагин, а не ядро. У Yoast, Rank Math и похожих решений логика отличается, поэтому нельзя слепо копировать код из чужой статьи.
Откройте карту сайта и найдите раздел с медиа или attachment. Если URL есть в sitemap, но сами страницы вам не нужны, задача состоит не в том, чтобы ломать медиа-библиотеку, а в том, чтобы исключить этот тип записей из XML-карты.
Параллельно проверьте, не включены ли attachment в индекс через настройки темы или SEO-плагина. Иногда sitemap уже чистый, но старые URL всё ещё висят в индексе из-за прошлой конфигурации.
Что лучше: плагин, код или оба варианта
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Настройка SEO-плагина | Если плагин умеет исключать attachment из sitemap | Без кода, проще поддерживать | Зависит от конкретного плагина |
| Код в теме или mu-plugin | Если нужен точечный контроль | Предсказуемо и прозрачно | Нужно аккуратно обновлять |
| Плагин + код | Если часть логики уже в SEO-плагине, а часть нужно добить вручную | Гибко | Есть риск дублирования правил |
Пошаговое решение через код
Если ваш SEO-плагин не даёт нужной настройки или вы хотите зафиксировать поведение на уровне проекта, проще всего убрать attachment из sitemap фильтром. Для WordPress core sitemap это делается через фильтр wp_sitemaps_post_types.
Добавьте код в functions.php дочерней темы или, что надёжнее, в небольшой mu-plugin.
<?php
add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
if ( isset( $post_types['attachment'] ) ) {
unset( $post_types['attachment'] );
}
return $post_types;
} );Этот вариант убирает attachment из стандартной XML-карты WordPress. Он не трогает сами файлы и не удаляет медиа из библиотеки.
Если sitemap генерирует SEO-плагин
У некоторых плагинов есть собственные фильтры или настройки для исключения типов записей из sitemap. Здесь важно не смешивать два механизма: если вы отключили attachment в плагине, дополнительный код для core sitemap может быть уже не нужен.
Практика простая: сначала проверьте настройки плагина, потом — его документацию по фильтрам. Если нужного переключателя нет, используйте код только для того механизма, который реально работает на сайте.
Как закрыть attachment-страницы, если они уже в индексе
Удаление из sitemap не всегда достаточно. Если attachment-страницы уже проиндексированы, поисковику нужно явно показать, что они больше не являются целевыми страницами.
Самый безопасный путь — отдавать на attachment-страницах редирект на сам файл или на родительскую запись, если это соответствует вашей структуре. Но здесь важно не создать цепочку редиректов и не сломать просмотр вложений там, где он нужен.
Если вы не хотите редиректить, а хотите просто исключить страницу из индекса, используйте настройки SEO-плагина или мета robots для attachment. На уровне кода это уже зависит от конкретной схемы сайта, поэтому универсального фильтра без контекста лучше не навязывать.
Проверка результата после внедрения
После изменения не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что карта сайта действительно изменилась и что поисковик видит актуальную версию.
- Откройте XML sitemap и убедитесь, что раздел attachment больше не присутствует.
- Проверьте исходный код sitemap на наличие URL вида
/attachment/. - Если используете Search Console, отправьте sitemap на повторную обработку.
- Посмотрите, не появились ли ошибки 404 или редирект-цепочки на медиа-страницах.
Для быстрой локальной проверки можно запросить sitemap через curl и поискать нужный тип URL:
curl -s https://example.com/wp-sitemap-posts-post-1.xml | grep attachmentЕсли команда ничего не выводит, это хороший знак. Но на больших сайтах лучше проверить и другие sitemap-файлы, если у вас их несколько.
Частые ошибки и как их исправить
Отключили attachment в sitemap, но URL остались в индексе
Это нормально для старых страниц. Sitemap не удаляет уже проиндексированные URL мгновенно. Нужно дождаться переобхода или дополнительно закрыть страницы от индексации через SEO-настройки и, при необходимости, настроить редирект.
Сломали sitemap после обновления темы
Если код был вставлен в functions.php активной темы, обновление или смена темы может его затереть. Для таких правок лучше использовать mu-plugin или отдельный функциональный плагин проекта.
Убрали attachment, но потеряли полезные медиа-страницы
Так бывает на сайтах, где attachment используется как полноценный контент. В этом случае не отключайте тип записи вслепую. Сначала проверьте, есть ли у attachment трафик, внутренние ссылки и смысл как у отдельной страницы.
Сделали редирект на главную для всех attachment
Это грубая схема, которая часто ухудшает поведение сайта. Пользователь и поисковик получают нерелевантную посадочную. Лучше редиректить на родительскую запись или файл, если это оправдано структурой сайта.
Практические советы по безопасности и поддержке
Если вы вносите такие изменения через код, держите их отдельно от шаблонов темы. Для проекта это удобнее: правка не потеряется при обновлении дизайна, а поведение sitemap останется стабильным.
- используйте дочернюю тему или mu-plugin для точечных SEO-правок;
- после изменений очищайте кэш страницы и кэш CDN, если он есть;
- проверяйте sitemap не только в браузере, но и через
curlили просмотр исходника; - не отключайте attachment без понимания, как они используются в контенте;
- если на сайте стоит SEO-плагин, сначала проверьте его настройки, а уже потом добавляйте код.
Если нужен более широкий разбор дублей и служебных страниц, на практике часто помогает связка из настроек SEO-плагина и точечной чистки. Например, в Clearfy Pro есть инструменты для удаления дублей и технической оптимизации, но использовать их стоит только после проверки, какие именно URL вам нужно оставить в индексе, а какие убрать.
Главный критерий здесь простой: после правки sitemap должен содержать только те URL, которые вы готовы защищать в поиске. Всё остальное — технический шум, который лучше убрать заранее, чем потом разбирать по отчётам.