Как создать мультиязычный сайт на WordPress

Как создать мультиязычный сайт на WordPress

Создание мультиязычного сайта на WordPress открывает доступ к международной аудитории и повышает конверсию. В этом гайде мы рассмотрим все способы реализации — от плагинов до ручной настройки с кодом.

Зачем нужен мультиязычный сайт

Мультиязычность позволяет:

  • Привлекать посетителей из разных стран
  • Улучшать SEO для региональных запросов
  • Повышать доверие пользователей
  • Увеличивать время пребывания на сайте

Способ 1: Использование плагина Polylang

Polylang — один из самых популярных бесплатных плагинов для создания мультиязычных сайтов.

Шаг 1. Установка плагина

Перейдите в админ-панель WordPress:

Плагины → Добавить новый → Поиск "Polylang" → Установить → Активировать

Шаг 2. Настройка языков

После активации перейдите в раздел Языки и добавьте нужные языки:

  1. Выберите язык из выпадающего списка
  2. Укажите порядок отображения
  3. Нажмите «Добавить новый язык»

Добавьте, например, русский и английский языки.

Шаг 3. Перевод контента

Для каждой записи или страницы появятся флаги языков. Создайте перевод, нажав на «+» напротив нужного языка.

Шаг 4. Добавление переключателя языков

Добавьте виджет переключателя через Внешний вид → Виджеты → Переключатель языков или используйте код в шаблоне:

<?php
if (function_exists('pll_the_languages')) {
    pll_the_languages(array(
        'show_flags' => 1,
        'show_names' => 1,
        'dropdown'   => 0
    ));
}
?>

Способ 2: Плагин WPML

WPML — мощное платное решение с расширенным функционалом.

Шаг 1. Установка и настройка

После покупки и установки пройдите пошаговый мастер настройки:

  1. Выберите язык по умолчанию
  2. Добавьте дополнительные языки
  3. Настройте формат URL (папки, поддомены или параметры)

Шаг 2. Формат URL

WPML предлагает три варианта структуры URL:

site.com/ru/ — языковые папки
ru.site.com/ — поддомены
site.com/?lang=ru — параметр запроса

Рекомендуется использовать языковые папки для лучшего SEO.

Способ 3: Ручная реализация без плагинов

Для разработчиков подойдёт способ с использованием файлов локализации.

Шаг 1. Подготовка темы

В файле functions.php добавьте поддержку локализации:

function my_theme_setup() {
    load_theme_textdomain('mytheme', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'my_theme_setup');

Шаг 2. Использование функций перевода

Оберните все текстовые строки в функции перевода:

// Простой вывод
_e('Добро пожаловать', 'mytheme');

// Возврат строки
$text = __('Наши услуги', 'mytheme');

// С множественным числом
printf(
    _n('%d товар', '%d товара', $count, 'mytheme'),
    $count
);

Шаг 3. Создание файлов перевода

Используйте программу Poedit для создания файлов .po и .mo:

  1. Откройте Poedit
  2. Создайте новый каталог из POT-файла
  3. Переведите строки
  4. Сохраните в папку /languages/ с именами mytheme-en_US.po и mytheme-en_US.mo

Шаг 4. Переключение языка через код

Создайте функцию определения языка по URL:

function detect_language() {
    $lang = 'ru_RU'; // по умолчанию
    
    $uri = $_SERVER['REQUEST_URI'];
    if (strpos($uri, '/en/') !== false) {
        $lang = 'en_US';
    }
    
    switch_to_locale($lang);
    return $lang;
}
add_action('init', 'detect_language');

Шаг 5. Перевод меню навигации

Для перевода пунктов меню можно использовать плагин Polylang (как это сделать описано ниже), либо прописывать пункты меню прямо в шаблоне темы назначив перевод каждому пункту меню.

Настройка SEO для мультиязычного сайта

1. Добавим hreflang

Добавьте теги hreflang в <head> для правильной индексации:

function add_hreflang_tags() {
    ?>
    <link rel="alternate" hreflang="ru" 
          href="https://site.com/ru<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <link rel="alternate" hreflang="en" 
          href="https://site.com/en<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <link rel="alternate" hreflang="x-default" 
          href="https://site.com<?php echo $_SERVER['REQUEST_URI']; ?>" />
    <?php
}
add_action('wp_head', 'add_hreflang_tags');

2. Настройка карты сайта

Убедитесь, что sitemap.xml включает страницы всех языков. Большинство плагинов (Yoast SEO, Rank Math) поддерживают интеграцию с Polylang и WPML.

Перевод меню навигации

Для перевода меню в Polylang создайте отдельные меню для каждого языка:

register_nav_menus(array(
    'primary_ru' => 'Главное меню (RU)',
    'primary_en' => 'Главное меню (EN)'
));

Затем выводите нужное меню в зависимости от языка:

$current_lang = pll_current_language();
wp_nav_menu(array(
    'theme_location' => 'primary_' . $current_lang,
    'container'      => 'nav'
));

Рекомендации по выбору способа

СпособКому подходитСложность
PolylangМалый и средний сайтНизкая
WPMLКрупные проектыСредняя
РучнаяРазработчикамВысокая

Частые ошибки

  1. Отсутствие hreflang — приводит к неправильной индексации
  2. Дублирование контента — используйте канонические ссылки
  3. Забытый перевод строк темы — проверяйте все шаблоны
  4. Разные URL для одного контента — настройте редиректы

Заключение

Запуск мультиязычного сайта на WordPress — не такая уж страшная задача, как кажется на первый взгляд, особенно если под рукой есть проверенные плагины вроде Polylang или WPML. Даже если вы только начинаете разбираться в сайтостроении, Polylang хорош тем, что бесплатен и довольно понятен: добавить еще один язык — это, по сути, пара щелчков мышью. Конечно, если вы закалённый разработчик и привыкли держать всё под контролем (вплоть до каждой мелочи), всегда остается вариант ручной настройки — там можно выкроить максимально кастомную архитектуру, но времени уйдёт в разы больше.

Есть один важный момент, про который многие почему-то забывают — SEO в многозначном сайте работает посвоему. Например, та самая загадочная штука hreflang (это тег в коде страницы), управляет тем, какой язык показывать пользователю из конкретной страны. Не проставишь этот тег — и рискуешь получить испанскую версию для жителей Канады или наоборот. Плюс структура адресов страниц тоже влияет на то, как сайт воспринимает поисковик: например, сайт.com/en/ приветствуется больше, чем простой перевод текста без смены ссылки.

Ну и совет из практики: как бы ни хотелось запустить сайт скорее, не поленитесь в последний раз пройтись по всем языковым версиям — у меня лично бывали случаи, когда какая-нибудь кнопка “назад” уводила пользователя то ли на другую языковую страницу, то ли вообще домой (и он терялся навсегда). Перепроверьте переводы и навигацию хотя бы глазами “незнакомца” — это экономит тонны времени и нервов потом.