Как создать мультиязычный сайт на WordPress
Создание мультиязычного сайта на WordPress открывает доступ к международной аудитории и повышает конверсию. В этом гайде мы рассмотрим все способы реализации — от плагинов до ручной настройки с кодом.
Зачем нужен мультиязычный сайт
Мультиязычность позволяет:
- Привлекать посетителей из разных стран
- Улучшать SEO для региональных запросов
- Повышать доверие пользователей
- Увеличивать время пребывания на сайте
Способ 1: Использование плагина Polylang
Polylang — один из самых популярных бесплатных плагинов для создания мультиязычных сайтов.
Шаг 1. Установка плагина
Перейдите в админ-панель WordPress:
Плагины → Добавить новый → Поиск "Polylang" → Установить → Активировать
Шаг 2. Настройка языков
После активации перейдите в раздел Языки и добавьте нужные языки:
- Выберите язык из выпадающего списка
- Укажите порядок отображения
- Нажмите «Добавить новый язык»
Добавьте, например, русский и английский языки.
Шаг 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. Установка и настройка
После покупки и установки пройдите пошаговый мастер настройки:
- Выберите язык по умолчанию
- Добавьте дополнительные языки
- Настройте формат 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:
- Откройте Poedit
- Создайте новый каталог из POT-файла
- Переведите строки
- Сохраните в папку /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 | Крупные проекты | Средняя |
| Ручная | Разработчикам | Высокая |
Частые ошибки
- Отсутствие hreflang — приводит к неправильной индексации
- Дублирование контента — используйте канонические ссылки
- Забытый перевод строк темы — проверяйте все шаблоны
- Разные URL для одного контента — настройте редиректы
Заключение
Запуск мультиязычного сайта на WordPress — не такая уж страшная задача, как кажется на первый взгляд, особенно если под рукой есть проверенные плагины вроде Polylang или WPML. Даже если вы только начинаете разбираться в сайтостроении, Polylang хорош тем, что бесплатен и довольно понятен: добавить еще один язык — это, по сути, пара щелчков мышью. Конечно, если вы закалённый разработчик и привыкли держать всё под контролем (вплоть до каждой мелочи), всегда остается вариант ручной настройки — там можно выкроить максимально кастомную архитектуру, но времени уйдёт в разы больше.
Есть один важный момент, про который многие почему-то забывают — SEO в многозначном сайте работает посвоему. Например, та самая загадочная штука hreflang (это тег в коде страницы), управляет тем, какой язык показывать пользователю из конкретной страны. Не проставишь этот тег — и рискуешь получить испанскую версию для жителей Канады или наоборот. Плюс структура адресов страниц тоже влияет на то, как сайт воспринимает поисковик: например, сайт.com/en/ приветствуется больше, чем простой перевод текста без смены ссылки.
Ну и совет из практики: как бы ни хотелось запустить сайт скорее, не поленитесь в последний раз пройтись по всем языковым версиям — у меня лично бывали случаи, когда какая-нибудь кнопка “назад” уводила пользователя то ли на другую языковую страницу, то ли вообще домой (и он терялся навсегда). Перепроверьте переводы и навигацию хотя бы глазами “незнакомца” — это экономит тонны времени и нервов потом.