Ситуация типовая: вы опубликовали новую запись, а в XML-карте сайта она не появилась. Или наоборот — удалили страницу, но она продолжает висеть в sitemap. Для SEO это неприятно не само по себе, а потому что поисковик получает устаревший сигнал о структуре сайта. На практике проблема обычно сводится к одному из трёх сценариев: карта генерируется плагином, который кэширует результат; в WordPress включён конфликтующий SEO-плагин; или в sitemap попадают записи, которые вы сами исключили из индексации, но не из карты сайта.
Как понять, что проблема именно в sitemap, а не в индексации
Сначала проверьте, что именно не работает. Иногда страница уже есть в XML, но не индексируется из-за noindex, каноникала или запрета в robots.txt. А иногда sitemap действительно отдаёт старую структуру.
- Откройте адрес карты сайта, обычно это
/sitemap_index.xmlили/wp-sitemap.xml. - Проверьте дату последней модификации у нужного URL.
- Сравните содержимое sitemap с фактическим списком опубликованных записей и страниц.
- Посмотрите, не отдаёт ли карта сайта закэшированную версию через плагин, CDN или серверный кэш.
Если в браузере sitemap обновился, а в поисковой консоли нет — это уже отдельная история с переобходом. Но если сам XML не меняется, начинать нужно с генератора карты сайта.
Диагностика: где WordPress берёт sitemap
В WordPress карта сайта может генерироваться ядром или SEO-плагином. Это важно, потому что одновременно активные генераторы часто мешают друг другу. Например, у ядра WordPress есть собственный XML sitemap, а Yoast SEO, Rank Math и другие плагины обычно подменяют его своим вариантом.
Проверьте, какой sitemap открыт сейчас
Если у вас есть SEO-плагин, посмотрите его настройки sitemap. Если плагина нет, а карта открывается по адресу /wp-sitemap.xml, значит работает встроенный генератор WordPress. Если же используется /sitemap_index.xml, это чаще всего сторонний плагин.
Проверьте кэш
Даже если генерация работает правильно, старый XML может раздавать кэш. Это особенно заметно на сайтах с плагинами кэширования, серверным FastCGI cache или CDN. Для диагностики полезно временно открыть sitemap с параметром, который не должен влиять на содержимое, и сравнить заголовки ответа. Если кэшируется HTML-страница, а не XML, это уже настройка веб-сервера или плагина.
curl -I https://example.com/sitemap_index.xml
Смотрите на заголовки вроде cache-control, x-cache, cf-cache-status или аналогичные. Если sitemap отдаётся из кэша слишком долго, обновления будут запаздывать.
Рабочие способы исправить обновление XML sitemap
Ниже — практический порядок действий. Он подходит для большинства сайтов на WordPress, независимо от того, используется ли ядро или SEO-плагин.
1. Убедитесь, что не включены два генератора sitemap одновременно
Если у вас установлен SEO-плагин, проверьте, не оставили ли вы включённым встроенный sitemap WordPress. Два источника карты сайта не всегда ломают сайт сразу, но создают путаницу: поисковик может видеть разные наборы URL, а вы — не понимать, какой XML актуален.
Для Yoast SEO и похожих плагинов обычно достаточно отключить встроенный sitemap ядра через фильтр, если плагин сам его подменяет. Делать это стоит только если вы точно понимаете, какой генератор должен остаться активным.
add_filter('wp_sitemaps_enabled', '__return_false');
Этот код отключает встроенный sitemap WordPress. Используйте его только если ваш SEO-плагин действительно генерирует собственную карту сайта.
2. Сбросьте правила и кэш
После изменения настроек sitemap полезно сбросить постоянные ссылки и очистить кэш. Иногда карта сайта не обновляется не из-за генератора, а из-за старых rewrite-правил или кэшированного ответа.
- Откройте Настройки → Постоянные ссылки и нажмите сохранение без изменений.
- Очистите кэш плагина кэширования.
- Если есть серверный кэш или CDN, сбросьте и его.
- Проверьте sitemap в режиме инкогнито и через
curl.
3. Исключите из sitemap то, что не должно туда попадать
Частая ошибка — запись скрыта от индексации, но всё равно остаётся в XML. Это не критическая поломка, но сигнал для поисковика получается противоречивый. Если вы исключаете тип записи из индексации, проверьте, что он также исключён из sitemap на уровне плагина или фильтра.
Для встроенного sitemap WordPress можно убрать отдельный тип записей через фильтр. Пример ниже исключает произвольный тип event из карты сайта.
add_filter('wp_sitemaps_post_types', function ($post_types) {
unset($post_types['event']);
return $post_types;
});
Если нужно исключить отдельную запись, а не весь тип, используйте фильтр для URL-элементов:
add_filter('wp_sitemaps_posts_query_args', function ($args, $post_type) {
if ($post_type === 'post') {
$args['post__not_in'] = array(123, 456);
}
return $args;
}, 10, 2);
Этот вариант полезен, когда в sitemap не должны попадать служебные материалы, дубли или устаревшие страницы.
4. Проверьте, не ломает ли sitemap фильтр безопасности или оптимизации
Иногда оптимизационные плагины слишком агрессивно чистят сайт: отключают REST, урезают эмбеддинги, меняют rewrite-правила или скрывают системные URL. Сам sitemap они обычно не трогают напрямую, но побочные эффекты встречаются. Если после отключения плагина карта сайта начинает обновляться, ищите конфликт в его настройках.
Для таких задач удобнее сначала проверить сайт в минимальной конфигурации: без кэша, без SEO-плагина, без оптимизатора. Если проблема исчезла, возвращайте плагины по одному и фиксируйте, на каком шаге XML перестаёт обновляться.
Сравнение подходов: плагин, код или ручная очистка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Настройки SEO-плагина | Если sitemap генерирует Yoast, Rank Math или аналог | Безопасно, без правки кода | Не всегда видно, где именно конфликт |
| Фильтры в functions.php или mu-plugin | Если нужно исключить типы записей или отдельные URL | Точно и прозрачно | Нужна аккуратность и тестирование |
| Очистка кэша и сброс rewrite | Если XML не меняется после публикации | Быстро помогает при кэшировании | Не решает логическую ошибку в настройках |
Как проверить, что исправление сработало
После изменений не ограничивайтесь визуальной проверкой в браузере. Сайт может показывать свежий XML только вам, а поисковику — старый кэш.
- Откройте sitemap в приватном окне и убедитесь, что в нём есть новые URL.
- Проверьте заголовки ответа через
curl -I. - Сравните дату
lastmodу недавно обновлённой записи. - Если используется Search Console, отправьте sitemap на повторную обработку после очистки кэша.
Для дополнительной проверки можно запросить конкретную запись через XML и убедиться, что она присутствует в нужном разделе карты сайта. Если запись опубликована, но не попала в sitemap, ищите ограничения по статусу, типу записи, таксономии или настройкам плагина.
Частые ошибки и как их исправить
Оставили включёнными два sitemap-генератора
Это самая частая причина путаницы. В итоге один URL отдаёт карту ядра, другой — карту SEO-плагина, а вы смотрите не туда. Решение простое: оставьте один источник.
Очистили кэш страницы, но не кэш XML
Некоторые плагины кэшируют только HTML, но sitemap может обслуживаться отдельно. Проверьте настройки исключений для XML-адресов и сбросьте кэш полностью.
Исключили страницу из индексации, но не из sitemap
Это не всегда ошибка, но для технически чистой конфигурации лучше, чтобы правила были согласованы. Если URL не должен индексироваться, проверьте, нужен ли он вообще в карте сайта.
Сломали rewrite-правила после миграции
После переноса сайта или смены домена sitemap может вести на старые адреса, если не обновлены постоянные ссылки или не сброшены правила перезаписи. В таком случае помогает пересохранение настроек и проверка .htaccess или конфигурации Nginx.
Практические советы по безопасности и производительности
Не стоит делать sitemap «умнее», чем нужно. Чем больше логики вы добавляете в генерацию, тем выше шанс получить нестабильный XML. Если сайт большой, лучше исключать мусор на уровне типа записей и таксономий, а не через тяжёлые запросы в фильтрах.
Если вы правите кодом, выносите фильтры в mu-plugin, а не в тему. Так они не потеряются при смене шаблона. Для сайтов с несколькими редакторами полезно документировать, какие типы записей должны попадать в sitemap, а какие — нет. Это снижает риск случайно вернуть в карту служебные страницы, архивы или дубли.
Если нужен более широкий контроль над дублями, служебными страницами и технической чисткой сайта, имеет смысл смотреть в сторону инструментов, которые умеют управлять SEO-обвязкой без ручного разрастания кода. Но даже в этом случае базовая проверка sitemap всё равно остаётся обязательной.
Когда проблема не в sitemap, а в индексации
Если XML обновляется корректно, но страницы всё равно не появляются в поиске, дальше нужно смотреть не карту сайта, а саму страницу: статус ответа, canonical, meta robots, внутренние ссылки и качество контента. Sitemap лишь сообщает поисковику, что URL существует. Он не гарантирует индексацию.
Поэтому рабочий порядок всегда такой: сначала убедиться, что sitemap актуален; затем проверить, не мешают ли индексации другие технические сигналы; и только после этого искать проблему в контенте или ссылочной структуре.