С выходом WordPress 5.5 система начала автоматически генерировать XML карты сайта (sitemap), чтобы облегчить индексацию страниц поисковыми системами. Однако в некоторых случаях встроенная карта сайта может мешать работе сторонних плагинов SEO, создавать дублирование или не соответствовать специфическим требованиям проекта. В этой статье разберем, как правильно отключить встроенный XML sitemap WordPress, сохранив при этом контроль над SEO.
Что такое XML sitemap и зачем его отключать в WordPress
XML sitemap — это файл, в котором перечислены все важные страницы сайта для поисковых систем. WordPress создает его автоматически, но иногда возникает необходимость отключить стандартный sitemap:
- Если вы используете сторонние SEO-плагины с собственными картами сайта (например, SEO Pack, Yoast SEO или Rank Math), чтобы избежать дублирования.
- Если нужно полностью контролировать генерацию sitemap и включать в неё только нужные страницы.
- Для устранения возможных конфликтов с кэшированием или CDN.
Важно понимать, что отключение sitemap не влияет на работу сайта, но требует, чтобы вы обеспечили альтернативный способ предоставления карты сайта для поисковиков.
Как отключить встроенный XML sitemap в WordPress стандартными средствами
WordPress использует класс WP_Sitemaps и хук wp_sitemaps_enabled для управления генерацией sitemap. Чтобы отключить автоматическую генерацию, можно использовать фильтр, добавив следующий код в файл functions.php вашей темы или в плагин с пользовательскими функциями:
add_filter('wp_sitemaps_enabled', '__return_false');Этот однострочный фильтр полностью отключит все встроенные sitemap и по адресу /wp-sitemap.xml будет возвращаться 404 ошибка.
Преимущества данного способа:
- Простота и безопасность.
- Не требует удаления файлов ядра WordPress.
- Подходит для большинства случаев.
Пример функции с префиксом домена wpmake
Для удобства поддержки кода можно написать собственную функцию с префиксом, например wpmake_disable_sitemap():
function wpmake_disable_sitemap() {
add_filter('wp_sitemaps_enabled', '__return_false');
}
add_action('init', 'wpmake_disable_sitemap');Это позволит быстро найти и изменить функцию в будущем, если потребуется.
Отключение отдельных типов sitemap WordPress
Иногда нужно не отключать всю карту сайта, а убрать только определённые её части, например sitemap записей, таксономий или авторов. Для этого используют фильтр wp_sitemaps_posts_query_args или модифицируют регистрацию sitemap через фильтр wp_sitemaps_add_provider.
Пример отключения sitemap авторов:
add_filter('wp_sitemaps_enabled', function($enabled) {
if (is_admin()) {
return $enabled;
}
remove_action('init', 'wp_sitemaps_register_authors');
return $enabled;
}, 10, 1);Однако такой способ менее универсален и требует тестирования, так как внутренние хуки могут изменяться.
Использование плагинов для управления sitemap
Если вы предпочитаете управлять sitemap визуально, рекомендую использовать плагины:
- SEO Pack — полностью заменяет стандартный sitemap и позволяет гибко настраивать включаемые страницы.
- Yoast SEO — автоматически отключает встроенный sitemap WordPress и генерирует собственный.
- Rank Math — аналогично, имеет расширенные настройки sitemap.
При использовании таких плагинов отключать встроенный sitemap вручную не обязательно, так как плагины делают это за вас.
Как проверить отключение sitemap и избежать ошибок
После добавления кода или установки плагина важно проверить, что sitemap действительно отключен:
- Перейдите по адресу
https://ваш-сайт.ru/wp-sitemap.xml. Если карта отключена, должна быть 404 ошибка или пустой вывод. - Проверьте заголовки HTTP — статус должен быть 404, а не 200.
- Убедитесь, что поисковые системы не видят старую карту, обновив их индекс через Search Console.
Также полезно очистить кэш сайта и CDN, чтобы изменения применились корректно.
Практический пример: отключение sitemap и создание кастомной карты сайта
В некоторых проектах требуется полностью контролировать sitemap и создавать её вручную. Ниже пример функции, которая отключает стандартный sitemap и выводит кастомный XML sitemap с нужными URL:
function wpmake_custom_sitemap() {
if (strpos($_SERVER['REQUEST_URI'], 'custom-sitemap.xml') !== false) {
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// Добавляем главную страницу
echo '<url><loc>' . home_url() . '</loc><priority>1.0</priority></url>';
// Добавляем все опубликованные посты
$posts = get_posts(array('post_status' => 'publish', 'numberposts' => -1));
foreach ($posts as $post) {
echo '<url><loc>' . get_permalink($post) . '</loc><priority>0.8</priority></url>';
}
echo '</urlset>';
exit;
}
}
add_action('init', 'wpmake_custom_sitemap');
// Отключаем стандартный sitemap
add_filter('wp_sitemaps_enabled', '__return_false');Теперь по адресу /custom-sitemap.xml будет доступна ваша карта сайта с нужным содержимым. Такой подход позволяет гибко управлять sitemap без зависимости от встроенных механизмов WordPress.
Заключение
Отключение встроенного XML sitemap в WordPress — частая задача при работе с SEO и кастомизацией сайта. Используйте фильтр wp_sitemaps_enabled, чтобы быстро и надежно отключить стандартный sitemap, либо создавайте свои решения для полного контроля. Для большинства проектов удобно использовать готовые SEO-плагины из WPShop, которые берут все задачи по sitemap на себя и дают расширенные настройки.