Начиная с версии 5.5 WordPress автоматически генерирует XML Sitemap для улучшения индексации сайта поисковыми системами. Однако бывают ситуации, когда нужно отключить эту функцию: например, при использовании сторонних плагинов SEO, кастомных решений для Sitemap или для устранения конфликтов.
Почему может понадобиться отключить XML Sitemap WordPress
Автоматически созданный WordPress XML Sitemap по умолчанию не всегда оптимален для всех сайтов. Вот несколько причин, когда стоит отключить стандартный Sitemap:
- Вы используете SEO-плагин с собственным механизмом Sitemap (например, Clearfy Pro, Yoast SEO, Rank Math).
- Нужен более тонкий контроль над содержимым Sitemap, которого невозможно достичь стандартными средствами.
- Для устранения проблем с производительностью при генерации Sitemap на больших сайтах.
- Если нужно полностью исключить Sitemap из индексации по соображениям безопасности или политики сайта.
Стандартный механизм Sitemap в WordPress: как он работает
В WordPress встроена функция wp_sitemaps_get_server(), которая отвечает за создание и вывод Sitemap. С помощью REST API по URL /wp-sitemap.xml возвращается карта сайта. Для отключения нужно вмешаться в этот процесс.
Обычно Sitemap генерируется динамически и не хранится в виде физического файла, поэтому нельзя просто удалить файл — нужно отключить регистрацию маршрутов.
Как отключить XML Sitemap через functions.php
Самый простой способ отключить встроенный Sitemap — убрать регистрацию маршрутов REST API, отвечающих за Sitemap. Для этого добавьте следующий код в файл functions.php вашей темы или в файл кастомного плагина:
function wpskill_disable_xml_sitemap() {
add_filter('wp_sitemaps_enabled', '__return_false');
}
add_action('init', 'wpskill_disable_xml_sitemap');Фильтр wp_sitemaps_enabled отвечает за включение или отключение Sitemap. Возвращая false, мы полностью отключаем этот функционал.
Пояснения к коду
Вызываем add_filter с функцией __return_false, которая всегда возвращает false, тем самым отключая все Sitemap.
Как проверить, что Sitemap отключен
После добавления кода очистите кеш сайта и браузера, затем откройте URL https://ваш-сайт.ru/wp-sitemap.xml. Если отключение прошло успешно, вы увидите ошибку 404 или сообщение, что страница не найдена.
Отключение отдельных типов Sitemap
Иногда нужно не полностью отключать Sitemap, а убрать только определённые типы: например, карты для авторов, таксономий или записей. Можно использовать фильтр wp_sitemaps_register_provider для удаления нужных провайдеров.
function wpskill_remove_sitemap_providers( $providers ) {
// Удаляем Sitemap для авторов
if ( isset( $providers['users'] ) ) {
unset( $providers['users'] );
}
// Удаляем Sitemap для таксономий
if ( isset( $providers['taxonomies'] ) ) {
unset( $providers['taxonomies'] );
}
return $providers;
}
add_filter( 'wp_sitemaps_register_providers', 'wpskill_remove_sitemap_providers' );Этот код удалит из Sitemap разделы с пользователями и таксономиями, но оставит остальные.
Альтернативы стандартному Sitemap: плагины и кастомные решения
Если вы отключаете стандартный Sitemap и хотите использовать более продвинутый инструмент, рассмотрите плагины с расширенными настройками:
- Clearfy Pro — позволяет легко управлять Sitemap, отключать лишние разделы и оптимизировать SEO.
- Yoast SEO — популярный SEO-плагин с гибкой настройкой Sitemap.
- Rank Math — мощный SEO-пакет с расширенными возможностями генерации Sitemap.
Для создания полностью кастомного Sitemap на PHP можно сделать отдельный шаблон или endpoint. Вот пример простейшего кастомного Sitemap, который выводит URL всех опубликованных записей:
function wpskill_custom_sitemap() {
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">';
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
];
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$url = get_permalink( $post->ID );
$date = get_the_modified_date( 'c', $post->ID );
echo '<url>';
echo '<loc>' . esc_url( $url ) . '</loc>';
echo '<lastmod>' . esc_html( $date ) . '</lastmod>';
echo '</url>';
}
echo '</urlset>';
exit;
}
add_action( 'init', function() {
if ( isset( $_GET['custom_sitemap'] ) ) {
wpskill_custom_sitemap();
}
} );Теперь, перейдя по адресу https://ваш-сайт.ru/?custom_sitemap=1, вы увидите свой простой Sitemap.
Выводы и рекомендации
Отключение стандартного XML Sitemap в WordPress — простая задача с помощью фильтра wp_sitemaps_enabled. Это важно для совместимости с SEO-плагинами и кастомными решениями. Если вам нужно более детальное управление Sitemap, используйте фильтр wp_sitemaps_register_providers или создавайте собственные карты сайта.
Для удобства управления Sitemap и SEO советую обратить внимание на плагин Clearfy Pro, который интегрируется с WordPress и позволяет гибко настраивать Sitemap и другие параметры SEO без лишних усилий.