WordPress Notes WP-team

Как отключить XML sitemap для отдельных типов записей в WordPress без потери важных URL

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

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

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

Не каждый лишний URL в индексе связан именно с XML sitemap. Иногда поисковик находит страницу по внутренним ссылкам, через внешние ссылки или из старых версий сайта. Но sitemap часто становится источником «подсказок» для обхода, и если там лежит мусор, он ускоряет индексацию ненужного.

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

  • Откройте XML sitemap и посмотрите, какие типы URL там есть: записи, страницы, вложения, кастомные типы записей.
  • Сравните список с тем, что реально должно индексироваться.
  • Проверьте, не создаёт ли SEO-плагин отдельные sitemap для CPT, таксономий или медиафайлов.
  • Посмотрите, не закрыт ли нужный тип записей от индексации на уровне настроек, но всё ещё присутствует в sitemap.

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

Какие есть способы отключить отдельные типы записей из XML sitemap

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

СпособКогда подходитПлюсыМинусы
Настройки SEO-плагинаЕсли sitemap отдаёт плагинБез кода, быстроЗависит от интерфейса и версии плагина
Код через фильтрыЕсли нужен точный контрольПрозрачно, воспроизводимоНужно аккуратно тестировать после обновлений
Отключение типа записей целикомЕсли тип контента не должен индексироваться вообщеУбирает причину, а не симптомМожет повлиять на внутренние ссылки и шаблоны

Пошаговое решение через код

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

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

<?php
/**
 * Plugin Name: WP Team Sitemap Tuning
 */

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    // Убираем служебные и нежелательные типы записей из XML sitemap.
    unset( $post_types['attachment'] );
    unset( $post_types['revision'] );
    unset( $post_types['nav_menu_item'] );

    // Пример для кастомного типа записей.
    // unset( $post_types['portfolio'] );

    return $post_types;
} );

Если нужно убрать не весь тип записей, а только отдельные записи внутри типа, используйте фильтр wp_sitemaps_posts_query_args. Это полезно, когда CPT нужен на сайте, но часть контента не должна попадать в sitemap.

<?php
add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    if ( 'post' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    if ( 'portfolio' === $post_type ) {
        $args['post_status'] = 'publish';
    }

    return $args;
}, 10, 2 );

Во втором примере важно не переусердствовать. Если вы начнёте исключать записи по слишком общим условиям, можно случайно выкинуть из sitemap нужный контент. Лучше сначала убрать один тип или несколько конкретных ID, а потом проверить результат.

Если sitemap отдаёт SEO-плагин

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

Здесь важно не путать два разных действия:

  • закрыть тип записей от индексации;
  • убрать тип записей только из sitemap.

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

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

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

  1. Откройте sitemap index и проверьте список дочерних карт.
  2. Перейдите в карту нужного типа записей и убедитесь, что она больше не отдаётся.
  3. Очистите кэш сайта, если используется серверный или плагинный кэш.
  4. Проверьте ответ URL sitemap через браузер или curl.

Пример проверки через командную строку:

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

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

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

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

Убрали тип записей не там, где нужно

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

Смешали sitemap и noindex

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

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

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

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

У кастомных типов записей имена часто не совпадают с тем, как они отображаются в админке. Например, в интерфейсе это может быть «Портфолио», а в коде — portfolio. Перед правкой проверьте слаг типа записей в регистрации CPT.

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

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

Что стоит делать аккуратно:

  • не добавлять тяжёлые запросы внутри фильтров sitemap;
  • не скрывать нужные URL только ради «чистоты» карты сайта;
  • не править ядро WordPress и файлы плагинов напрямую;
  • хранить изменения в отдельном мини-плагине под версионным контролем.

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

Что должно получиться в итоге

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее