Встроенная XML-карта сайта в WordPress удобна, пока структура проекта простая. Но на живом сайте она часто становится источником лишних URL, дублей и конфликтов с SEO-логикой: в индекс попадают таксономии, архивы, вложения или служебные страницы, которые вы не хотите отдавать поисковикам. В такой ситуации разумнее отключить стандартный sitemap и собрать свой набор карт через плагин, SEO-модуль или код.
Ниже — практический сценарий: как понять, что именно мешает, чем заменить встроенную карту сайта и как проверить, что после изменений поисковики видят только нужные разделы.
Когда встроенный sitemap WordPress мешает
С 5.5 WordPress генерирует XML sitemap из коробки. Для небольшого блога это нормально, но на сайте с кастомными типами записей, лишними архивами и нестандартной структурой контента карта часто включает то, что не должно участвовать в индексации. Типичный пример — медиа-вложения, служебные таксономии, пустые архивы или CPT, которые вы закрываете от поиска через noindex, но они всё равно остаются в sitemap.
Признаки, что карту сайта лучше пересобрать
- в sitemap есть URL, которые отдают
404,301или закрыты от индексации; - в карте сайта появляются архивы, которые вы уже исключили из SEO-настроек;
- поисковик ругается на большое число «неважных» URL в отчётах по сканированию;
- в проекте есть отдельная логика для мультиязычности, фильтров или кастомных типов записей;
- нужно отдавать sitemap не из ядра, а из SEO-плагина или собственного генератора.
Диагностика: что именно отдаёт WordPress
Сначала проверьте, какой sitemap сейчас открыт на сайте. У ядра WordPress стандартный адрес — /wp-sitemap.xml. Если у вас стоит SEO-плагин, он может подменять этот механизм своим вариантом и отдавать карту по другому адресу. Важно не отключить одно и случайно не оставить второе, иначе получится каша из нескольких карт.
Откройте в браузере:
https://example.com/wp-sitemap.xmlДальше проверьте, какие разделы внутри него перечислены. Если видите лишние источники, которые не должны индексироваться, сначала решите, где именно их отключать: в настройках SEO-плагина, в коде темы или на уровне генератора sitemap.
Быстрая проверка через командную строку
Если есть доступ к серверу, удобно посмотреть ответ напрямую:
curl -I https://example.com/wp-sitemap.xmlНормальный ответ — 200 OK. Если вы уже отключили карту, здесь должен быть 404 или редирект на новый sitemap, если он заменён другим механизмом. Ещё полезно проверить, не осталось ли старых ссылок в robots.txt:
curl https://example.com/robots.txtВ robots.txt не должно быть ссылки на несуществующий sitemap. Если она есть, поисковик будет тратить время на лишний запрос и получать ошибку.
Как отключить XML sitemap в WordPress
Если вы хотите полностью убрать стандартную карту сайта ядра, используйте фильтр wp_sitemaps_enabled. Это штатный способ, без правки ядра и без хаков в плагинах.
<?php
add_filter( 'wp_sitemaps_enabled', '__return_false' );Код можно добавить в functions.php дочерней темы, в mu-plugin или в собственный мини-плагин. Для продакшена mu-plugin обычно надёжнее: он не зависит от темы и не пропадёт после её смены.
Если нужен свой sitemap вместо штатного
Полностью отключать карту имеет смысл только тогда, когда у вас уже есть замена. Это может быть SEO-плагин, который генерирует собственный sitemap, или отдельный плагин/скрипт, который отдаёт только нужные типы контента. Важно проверить, что новый sitemap:
- отдаёт только канонические URL;
- не включает
noindex-страницы; - не содержит редиректов и 404;
- обновляется автоматически при публикации и удалении записей;
- доступен по стабильному адресу, который можно указать в robots.txt.
Сравнение подходов: плагин, код или SEO-модуль
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро управлять картой без разработки | Гибкие исключения, интерфейс, меньше ручного кода | Зависимость от плагина, иногда лишняя нагрузка |
Код через wp_sitemaps_enabled | Нужен полный контроль над штатным sitemap | Просто, прозрачно, без лишних зависимостей | Нужно отдельно настроить замену |
| Собственный генератор sitemap | Сложная структура сайта, кастомные правила индексации | Максимальная точность, можно исключить всё лишнее | Требует поддержки и тестирования |
Пошаговое решение без потери индексации
- Снимите текущую карту сайта и выпишите, какие разделы в ней есть.
- Определите, какие URL должны остаться в индексе, а какие нет.
- Отключите штатный sitemap через
wp_sitemaps_enabled, если он мешает. - Подключите новый источник sitemap: SEO-плагин или собственную генерацию.
- Обновите robots.txt, если там указан старый адрес карты сайта.
- Проверьте ответы сервера и содержимое XML вручную.
- Отправьте новый sitemap в Search Console и дождитесь переобхода.
Если sitemap нужен только для части сайта
Иногда не нужно отключать карту полностью. Достаточно убрать из неё лишние типы записей и таксономии. Для этого лучше использовать настройки SEO-плагина или фильтры конкретного генератора, а не отключать всё ядро целиком. Такой подход безопаснее, если у вас уже есть рабочая карта для записей и страниц.
Проверка результата после внедрения
После изменений проверьте не только наличие XML, но и его содержимое. Ошибка многих админов в том, что они смотрят только на 200 OK и забывают проверить, какие URL реально попали в карту.
- Откройте новый sitemap в браузере и убедитесь, что там только нужные разделы.
- Проверьте, что старый
/wp-sitemap.xmlне отдаёт лишний контент. - Посмотрите robots.txt: ссылка на sitemap должна быть актуальной.
- В Search Console отправьте новый sitemap и проверьте статус обработки.
- Через несколько дней сравните отчёты по сканированию: не должно быть роста ошибок на исключённых URL.
Если у вас есть доступ к логам сервера, полезно посмотреть, как поисковые боты ходят по sitemap после обновления. Это помогает поймать ситуацию, когда карта формально работает, но внутри остались редиректы или битые ссылки.
Частые ошибки и как их исправить
Отключили штатный sitemap, но не добавили новый
В этом случае сайт остаётся без карты сайта вообще. Для небольшого проекта это не критично, но для большого сайта с частыми обновлениями это плохая идея. Решение простое: либо включите SEO-плагин с собственным sitemap, либо сделайте свой генератор.
Оставили старую ссылку в robots.txt
Поисковик продолжит запрашивать несуществующий файл. Исправление — обновить robots.txt и проверить, что там указан только актуальный адрес.
В sitemap попали URL с редиректом
Это частая ошибка после смены структуры или чистки дублей. В карту должны попадать только конечные канонические адреса. Если в XML есть 301, значит генератор берёт неправильный источник данных.
Сломали sitemap в кэше
После изменений старый XML может продолжать отдаваться из серверного или плагинного кэша. Очистите кэш страницы, объектный кэш и CDN, если он используется. Иначе вы будете проверять уже не тот файл, который видит бот.
Практические советы по безопасности и производительности
Не правьте ядро WordPress ради sitemap. Любое обновление затрёт изменения, а отладка потом станет лишней проблемой. Используйте mu-plugin или дочернюю тему, если код небольшой и должен жить рядом с сайтом.
Если sitemap генерируется тяжело, не делайте лишнюю работу на каждом запросе. Для больших сайтов лучше использовать плагин или генератор, который умеет кэшировать результат и обновлять его по событию публикации, а не пересчитывать XML на лету.
Если вам часто приходится чистить дубли, архивы и служебные URL, посмотрите в сторону инструментов, которые закрывают сразу несколько технических задач. Например, Clearfy Pro помогает управлять дублями, служебными страницами и частью SEO-настроек без ручного разбрасывания кода по теме.
Главная проверка здесь простая: sitemap должен содержать только те URL, которые вы реально хотите видеть в поиске. Если карта сайта показывает лишнее, проблема почти всегда не в XML как формате, а в том, как собраны источники контента и какие правила индексации у сайта заданы на самом деле.