Как создать автоматический sitemap WordPress с поддержкой многоязычности

Автоматический sitemap — важный инструмент для SEO, позволяющий поисковым системам быстро индексировать все страницы сайта. Особенно актуальна задача создания sitemap для сайтов с многоязычностью, где необходимо корректно указывать разные языковые версии страниц. В этой статье подробно рассмотрим, как с помощью WordPress создать динамический sitemap с поддержкой нескольких языков и примерами кода, а также обзор полезных плагинов для этой задачи.

Зачем нужен sitemap с поддержкой многоязычности в WordPress

Поисковые системы, такие как Google, учитывают версии страниц на разных языках, чтобы показывать пользователям релевантный контент. Если сайт на WordPress использует плагины для мультиязычности (Polylang, WPML, TranslatePress и т.д.), обычный sitemap часто не учитывает все языковые версии. Это может привести к неполной индексации и снижению видимости в поиске.

Поэтому важно создавать sitemap, который автоматически обновляется при добавлении новых страниц и содержит ссылки на все языковые версии каждой страницы с правильными атрибутами hreflang.

Рассмотрим два варианта решения: использование популярных плагинов и создание собственного решения на PHP.

Использование плагинов для генерации sitemap с многоязычностью

Плагин Rank Math SEO

Rank Math — мощный SEO-плагин с функцией автоматической генерации sitemap. Он поддерживает интеграцию с WPML и Polylang, автоматически добавляя языковые версии страниц в sitemap с правильными hreflang.

Чтобы активировать sitemap в Rank Math и включить поддержку многоязычности:

  • Установите и активируйте Rank Math (https://wpshop.ru/plugin/rank-math/?utm_source=wpto.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskiy-sitemap-wordpress-s-podderzhkoy-mnogoyazychnosti).
  • В настройках Rank Math перейдите в раздел Sitemap и включите генерацию.
  • Убедитесь, что интеграция с вашим мультиязычным плагином активна.

Rank Math автоматически обновит sitemap при изменении контента.

Плагин Google XML Sitemaps + Polylang

Google XML Sitemaps — классический плагин для sitemap, но по умолчанию не поддерживает многоязычность. Однако с Polylang можно с помощью дополнительного кода расширить функционал.

Пример кода для добавления hreflang в sitemap Google XML Sitemaps:

add_filter('sm_build_urlset', 'wpto_add_hreflang_to_sitemap', 10, 2);
function wpto_add_hreflang_to_sitemap($urlset, $args) {
    if (!function_exists('pll_get_post_language')) return $urlset;

    foreach ($urlset as &$url) {
        $post_id = url_to_postid($url['loc']);
        if ($post_id) {
            $languages = pll_get_post_translations($post_id);
            $hreflangs = '';
            foreach ($languages as $lang => $trans_id) {
                $trans_url = get_permalink($trans_id);
                $hreflangs .= "<xhtml:link rel=\"alternate\" hreflang=\"$lang\" href=\"$trans_url\" />";
            }
            $url['xhtml:link'] = $hreflangs;
        }
    }
    return $urlset;
}

Этот код добавляет в sitemap ссылки на альтернативные языковые версии через атрибуты hreflang.

Создание собственного динамического sitemap с многоязычностью на PHP

Если вы хотите гибко контролировать sitemap и не использовать плагины, можно создать свой PHP-скрипт, который будет генерировать sitemap с учетом языков, например, для Polylang.

Пример функции для генерации sitemap XML с поддержкой hreflang:

function wpto_generate_multilang_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" ';
    echo 'xmlns:xhtml="http://www.w3.org/1999/xhtml">';

    $posts = get_posts(array('post_type' => 'post', 'post_status' => 'publish', 'numberposts' => -1));

    foreach ($posts as $post) {
        $post_id = $post->ID;
        $url = get_permalink($post_id);

        echo '<url>';
        echo '<loc>' . esc_url($url) . '</loc>';

        if (function_exists('pll_get_post_translations')) {
            $translations = pll_get_post_translations($post_id);
            foreach ($translations as $lang => $trans_id) {
                $trans_url = get_permalink($trans_id);
                echo '<xhtml:link rel="alternate" hreflang="' . esc_attr($lang) . '" href="' . esc_url($trans_url) . '" />';
            }
        }

        echo '</url>';
    }

    echo '</urlset>';
}

Этот код можно подключить через отдельный endpoint WordPress или выполнять в шаблоне sitemap. Он перебирает все посты, получает языковые версии и добавляет ссылки с hreflang.

Для страниц, таксономий и других типов записей код нужно расширить аналогично.

Практические советы по интеграции и оптимизации sitemap

При работе с многоязычными sitemap обратите внимание на следующие моменты:

  • Кэширование: Генерация sitemap может быть ресурсоемкой, особенно на больших сайтах. Используйте кэширование результата (например, transient API или объектный кэш).
  • Обновление: Обеспечьте автоматическое обновление sitemap при публикации или обновлении контента. В плагинах это обычно реализовано автоматически.
  • Проверка валидности: Используйте инструменты Google Search Console для проверки sitemap и отлова ошибок.
  • Поддержка всех типов контента: Не забудьте добавить в sitemap страницы, записи, кастомные типы постов и таксономии, если они важны для индексации.
  • Указание canonical URL: В sitemap должны быть указаны канонические версии страниц, чтобы избежать дублей.

Заключение

Автоматический sitemap с поддержкой многоязычности — обязательный элемент SEO-оптимизации современных WordPress-сайтов. Используя плагины Rank Math или расширяя Google XML Sitemaps, вы быстро получите рабочее решение без сложного кода. Если же нужна максимальная кастомизация, можно создать собственный генератор sitemap на PHP с поддержкой hreflang, как показано выше.

Для удобства управления SEO и мультиязычностью рекомендуем обратить внимание на комплексные решения, такие как Rank Math (https://wpshop.ru/plugin/rank-math/?utm_source=wpto.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskiy-sitemap-wordpress-s-podderzhkoy-mnogoyazychnosti) и Polylang.

REST API WordPress: установка, настройка и примеры автоматизации
15.02.2026
Как создать автоматические отзывы с помощью Expert Review в WordPress
05.02.2026
Как создать динамический фильтр по атрибутам в WordPress для кастомных постов
17.12.2025
Как избавиться от повторяющихся постов в WordPress без плагинов
14.05.2026
Как исправить ошибку WooCommerce «Невозможно создать заказ» при смене способа оплаты
21.05.2026