Как отключить отдельные типы записей из XML Sitemap в WordPress

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

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

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

Не каждый «мусорный» URL в отчётах связан именно с XML Sitemap. Иногда страницы уже закрыты от индексации, но продолжают попадать в карту сайта. Это плохой сигнал: поисковик получает противоречивые указания, а в Search Console появляются лишние URL в отчётах по индексированию.

Что обычно попадает лишним

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

Как быстро диагностировать источник

Сначала откройте сам sitemap и проверьте, кто его генерирует. В WordPress это может быть встроенный генератор ядра или SEO-плагин. Если у вас есть Yoast SEO, Rank Math, AIOSEO или другой SEO-плагин, именно он часто управляет картой сайта, а не ядро.

  • Посмотрите URL sitemap: /wp-sitemap.xml — это встроенный генератор WordPress.
  • Если URL другой, например /sitemap_index.xml, значит карту сайта отдаёт SEO-плагин.
  • Проверьте, какие разделы sitemap реально присутствуют: записи, страницы, категории, теги, авторы, медиа.

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

Как убрать лишние типы записей из sitemap через код

У встроенного sitemap WordPress есть фильтры, через которые можно выключить отдельные типы записей и таксономии. Это хороший вариант, если вы не хотите ставить ещё один плагин ради одной настройки.

Отключаем целый тип записей

Если нужно убрать, например, кастомный тип portfolio, используйте фильтр wp_sitemaps_post_types. Код можно добавить в functions.php дочерней темы или в мини-плагин.

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

    return $post_types;
} );

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

Отключаем таксономии

Для категорий, тегов и кастомных таксономий используется фильтр wp_sitemaps_taxonomies.

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

    return $taxonomies;
} );

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

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

Если проблема не в типе целиком, а в нескольких конкретных страницах, используйте фильтр wp_sitemaps_posts_query_args и исключайте 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 попадают старые служебные записи, которые нельзя удалять из базы, но и показывать в карте сайта не нужно.

Если sitemap отдаёт SEO-плагин: что настраивать сначала

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

ПодходКогда подходитМинус
Настройка в SEO-плагинеЕсли sitemap генерирует плагин и есть нужный переключательЗависит от конкретного плагина
Фильтры WordPressЕсли используется встроенный sitemap или нужен точный контрольНужно поддерживать код
Отключение через robots.txtТолько для дополнительного ограничения обходаНе убирает URL из sitemap

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

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

Если нужен практический порядок действий, я бы делал так:

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

Если вы вносите код, не правьте основной файл темы. После обновления он затрётся. Для технических правок безопаснее использовать дочернюю тему или отдельный mu-plugin.

Пример мини-плагина для точечного контроля

Если не хотите держать код в functions.php, можно создать простой плагин в wp-content/mu-plugins/. Тогда он будет загружаться автоматически и не исчезнет при смене темы.

<?php
/**
 * Plugin Name: Sitemap Cleanup
 */

add_filter( 'wp_sitemaps_post_types', function( $post_types ) {
    unset( $post_types['portfolio'] );
    unset( $post_types['attachment'] );
    return $post_types;
} );

add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) {
    unset( $taxonomies['post_tag'] );
    return $taxonomies;
} );

Такой подход удобен, если у вас несколько правок, связанных именно с технической индексацией. Главное — не смешивать туда бизнес-логику сайта и не плодить хаотичные правки.

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

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

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

Если URL исчез из sitemap, но всё ещё индексируется, это нормально: удаление из карты сайта не удаляет страницу из индекса мгновенно. Для таких страниц нужно отдельно проверить статус noindex, каноникал и внутренние ссылки.

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

Отключили sitemap, но URL остались в индексе

Это частая путаница. Sitemap — это подсказка для обхода, а не команда на удаление. Если страница уже известна поисковику, она может оставаться в индексе до следующего переобхода или до явного сигнала noindex.

Скрыли URL через robots.txt и решили, что задача закрыта

Если страница запрещена в robots.txt, но уже есть в индексе, поисковик может не увидеть обновлённый noindex или каноникал. Поэтому robots.txt — не замена настройке sitemap, а отдельный инструмент, который нужно применять аккуратно.

Правили файл темы и потеряли изменения после обновления

Это классическая ошибка. Любая правка в родительской теме исчезнет после обновления. Для таких задач используйте дочернюю тему, mu-plugin или обычный плагин с одним файлом.

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

Иногда разработчик убирает из sitemap page или post, а потом удивляется, что сайт потерял важные страницы в отчётах. Перед изменениями проверьте, какие сущности реально должны индексироваться, а какие — нет.

Безопасность и производительность: что учесть

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

Если у вас большой сайт, следите за тем, чтобы:

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

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

Если после правок карта сайта всё ещё показывает старые данные, сначала очистите кеш страницы, объектный кеш и CDN, а уже потом ищите проблему в коде. В технической оптимизации это часто оказывается не багом WordPress, а просто устаревшим кешем.

Как отключить индексацию attachment-страниц в WordPress и оставить медиа на сайте
05.09.2026
Решение ошибки REST API WordPress 403 Forbidden
13.09.2026
Решение ошибки WP-Cron не запускается в WordPress
13.09.2026
WooCommerce не работает с платёжными системами: диагностика и решение
13.09.2026
WooCommerce не работает: способ определения и решения проблемы
13.09.2026