wplog.ru wordpress wplog.ru

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

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

Задача здесь не в том, чтобы «спрятать всё подряд», а в том, чтобы оставить в sitemap только те URL, которые реально должны индексироваться. Ниже — рабочие способы для WordPress: через SEO-плагин, через код и через проверку результата в Search Console.

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

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

Типичные признаки

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

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

Диагностика: что именно попадает в XML sitemap

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

Откройте sitemap в браузере и посмотрите, какие типы URL там перечислены. Если видите лишние разделы, проверьте настройки конкретного плагина и регистрацию post type. Часто проблема не в sitemap как таковом, а в том, что тип записи зарегистрирован как публичный и автоматически попадает в карту сайта.

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

Способ 1: убрать URL из sitemap через SEO-плагин

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

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

Если вы используете Clearfy Pro, там есть инструменты для чистки сайта и SEO-настроек, но принцип тот же: сначала определите источник sitemap, потом отключайте лишнее точечно, а не «на глаз».

Способ 2: исключить записи и страницы кодом

Когда настройки плагина не дают нужной гранулярности, проще добавить фильтр. Для ядра WordPress есть фильтр wp_sitemaps_posts_query_args, который позволяет изменить запрос к записям перед формированием sitemap. Это удобно, если нужно убрать конкретный тип записей или записи с определённым статусом.

add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
    // Убираем служебный тип записи из XML sitemap.
    if ( 'landing' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 );
    }

    return $args;
}, 10, 2 );

Этот пример исключает конкретные записи типа landing по ID. Если вам нужно убрать весь тип записи, лучше не полагаться только на sitemap, а проверить регистрацию post type. Но для точечной чистки такой фильтр подходит.

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

add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) {
    if ( 'page' === $post->post_type && in_array( (int) $post->ID, array( 17, 29, 41 ), true ) ) {
        return false;
    }

    return $entry;
}, 10, 2 );

Код лучше добавлять в мини-плагин или в functions.php дочерней темы. Если вставить это в родительскую тему, при обновлении правка исчезнет.

Как исключить таксономии и архивы

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

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

Проверьте, не создаёт ли тема отдельные архивы для меток, авторов, форматов записей или нестандартных таксономий. Если да, настройте их отдельно. Иначе вы уберёте URL из sitemap, но оставите их доступными и потенциально индексируемыми через внутренние ссылки.

Пошаговая схема внедрения

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

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

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

  • откройте /wp-sitemap.xml или sitemap SEO-плагина и проверьте список URL;
  • проверьте заголовок ответа и код страницы через браузер или curl -I;
  • в Search Console откройте отчёт по sitemap и посмотрите, не растёт ли число обнаруженных лишних URL;
  • если URL уже были в индексе, проверьте, не остались ли они в отчёте «Страницы» как проиндексированные.
curl -I https://example.com/wp-sitemap.xml
curl -I https://example.com/wp-sitemap-posts-page-1.xml

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

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

Отключили sitemap в одном месте, а он остался в другом

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

Скрыли страницу в шаблоне, но не убрали из sitemap

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

Удалили URL из sitemap, но не закрыли его от индексации

Поисковик может найти страницу через внутренние ссылки, внешние ссылки или старые сигналы. Если URL не должен индексироваться, проверьте noindex, каноникал и доступность страницы.

Сломали sitemap после правки functions.php

Ошибка синтаксиса в functions.php может положить весь сайт. Для таких правок лучше использовать мини-плагин или хотя бы проверять код на staging-копии перед выкладкой.

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

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

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

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

Когда лучше не писать код

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

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

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

×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »