Как создать автоматическое расширение XML Sitemap в WordPress с пользовательскими типами записей

XML Sitemap — это важный инструмент для SEO, который помогает поисковым системам эффективно индексировать содержимое вашего сайта. В WordPress стандартные XML Sitemap, доступные с версии 5.5, покрывают только основные типы записей, такие как записи и страницы. Но если вы используете пользовательские типы записей (Custom Post Types, CPT) и таксономии, стандартного функционала может быть недостаточно.

Что такое XML Sitemap и зачем расширять стандартный функционал WordPress

XML Sitemap — это файл, содержащий список URL вашего сайта, которые вы хотите, чтобы поисковые системы проиндексировали. Он упрощает работу роботов и позволяет быстрее находить новые или обновленные страницы.

Стандартный sitemap WordPress не всегда учитывает все пользовательские типы записей и таксономии. Например, если у вас есть CPT «Продукты» или «Отзывы», они могут не попасть в sitemap без дополнительной настройки. Это снижает видимость этих страниц в поиске и может негативно сказаться на SEO.

Расширение sitemap позволит:

  • Учитывать все пользовательские типы записей и таксономии.
  • Настраивать приоритет и частоту обновления для разных типов контента.
  • Автоматически обновлять sitemap при добавлении контента.

Расширение XML Sitemap в WordPress с помощью кода

WordPress предоставляет фильтры, которые позволяют модифицировать sitemap. Рассмотрим, как добавить пользовательский тип записей в стандартный sitemap.

Добавление пользовательского типа записей в sitemap

Предположим, что у вас есть CPT с названием product. Чтобы включить его в sitemap, добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wpkit_add_products_to_sitemap( \WP_Sitemaps_Provider\ $provider ) {
    if ( 'post' === $provider->get_sitemap_name() ) {
        // Добавляем CPT 'product' в sitemap
        add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) {
            if ( 'product' === $post_type ) {
                $args['post_status'] = 'publish';
            }
            return $args;
        }, 10, 2 );
    }
}
add_action( 'init', 'wpkit_add_products_to_sitemap' );

Однако более правильный способ — зарегистрировать собственного провайдера sitemap для CPT:

class WPKit_Product_Sitemap_Provider extends WP_Sitemaps_Provider_Posts {
    public function __construct() {
        parent::__construct( 'product' );
    }
}

function wpkit_register_product_sitemap_provider() {
    global $wp_sitemaps;
    if ( isset( $wp_sitemaps ) ) {
        $wp_sitemaps->register_provider( 'product', new WPKit_Product_Sitemap_Provider() );
    }
}
add_action( 'init', 'wpkit_register_product_sitemap_provider' );

Этот код создаст отдельный sitemap для ваших продуктов, который будет автоматически обновляться при изменении записей.

Добавление пользовательских таксономий в sitemap

По умолчанию таксономии в sitemap WordPress не всегда отображаются. Чтобы добавить их, используйте фильтр wp_sitemaps_taxonomies:

function wpkit_add_custom_taxonomy_to_sitemap( $taxonomies ) {
    $taxonomies[] = 'product_category'; // замените на вашу таксономию
    return $taxonomies;
}
add_filter( 'wp_sitemaps_taxonomies', 'wpkit_add_custom_taxonomy_to_sitemap' );

Так вы обеспечите попадание всех терминов таксономии в sitemap, что важно для SEO.

Использование плагинов для расширения XML Sitemap

Если вы предпочитаете готовые решения, есть несколько плагинов, которые помогут управлять sitemap с поддержкой CPT и таксономий:

  • Yoast SEO — один из самых популярных SEO-плагинов, имеющий расширенные функции для управления sitemap, включая поддержку пользовательских типов записей и таксономий.
  • Google XML Sitemaps — классический плагин, который позволяет гибко настраивать sitemap и добавлять кастомный контент.
  • Clearfy Pro — плагин для оптимизации WordPress, который также предлагает расширенные возможности управления sitemap.

Для примера, в Yoast SEO можно в настройках включить отображение нужных типов записей в sitemap, а также исключать лишние.

Автоматическое обновление и кэширование sitemap

XML Sitemap генерируется динамически, что может привести к нагрузке на сервер при большом объёме контента. Рекомендуется использовать кэширование.

Например, можно использовать transient API WordPress, чтобы кэшировать sitemap на определённое время:

function wpkit_get_cached_sitemap( $url ) {
    $cache_key = 'wpkit_sitemap_cache_' . md5( $url );
    $sitemap = get_transient( $cache_key );
    if ( false === $sitemap ) {
        $response = wp_remote_get( $url );
        if ( is_wp_error( $response ) ) {
            return '';
        }
        $sitemap = wp_remote_retrieve_body( $response );
        set_transient( $cache_key, $sitemap, HOUR_IN_SECONDS );
    }
    return $sitemap;
}

Такой подход уменьшит нагрузку и ускорит отдачу sitemap поисковикам.

Проверка и отладка созданного sitemap

После создания или расширения sitemap важно проверить, что он доступен и корректно отображается. Обычно стандартный sitemap находится по адресу https://ваш-сайт.ru/wp-sitemap.xml.

Для проверки используйте инструменты Google Search Console, Яндекс.Вебмастер или онлайн-сервисы проверки sitemap. Они покажут наличие ошибок, предупреждений и количество проиндексированных страниц.

Если вы создали кастомные провайдеры или добавили новые типы записей, стоит вручную проверить, что все нужные URL попадают в sitemap.

Выводы и рекомендации

Расширение XML Sitemap в WordPress — важный шаг для улучшения SEO, особенно если вы используете кастомный контент. Используйте встроенные фильтры и классы WordPress для добавления CPT и таксономий, либо проверенные плагины, если нужны более комплексные решения.

Обязательно проверяйте sitemap после изменений и применяйте кэширование для повышения производительности сайта.

Для автоматизации SEO-оптимизации и расширения возможностей sitemap можно рассмотреть использование Clearfy Pro от WPShop, который умеет гибко управлять sitemap и другими параметрами SEO.

Как изменить URL адреса типа permalink в WordPress без потери трафика
13.12.2025
Оптимизация производительности WordPress при работе с большими базами данных
15.01.2026
Автоматическое отображение динамических пользовательских форм в WordPress
20.03.2026
Как использовать WP-Cron для масштабных задач в WordPress
11.07.2026
Как создать собственный виджет WordPress: пошаговое руководство
26.11.2025