wpmake.ru wordpress WPMake

Как отключить XML sitemap в WordPress

С выходом 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 действительно отключен:

  1. Перейдите по адресу https://ваш-сайт.ru/wp-sitemap.xml. Если карта отключена, должна быть 404 ошибка или пустой вывод.
  2. Проверьте заголовки HTTP — статус должен быть 404, а не 200.
  3. Убедитесь, что поисковые системы не видят старую карту, обновив их индекс через 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 на себя и дают расширенные настройки.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙