В современном мире создание многоязычного сайта — задача, с которой сталкиваются многие владельцы проектов. WordPress изначально не предусматривает полноценной поддержки нескольких языков, поэтому приходится использовать дополнительные решения. В этой статье разберём, как создать полифонический сайт на WordPress, какие плагины и подходы выбрать, а также рассмотрим примеры кода для тонкой настройки.
Почему важно создавать многоязычный сайт на WordPress
Многоязычность расширяет аудиторию, улучшает SEO и повышает удобство пользователей из разных стран. Особенно это актуально для магазинов, блогов и корпоративных сайтов, которые хотят выйти на международный уровень. Однако просто добавить перевод — недостаточно. Нужно грамотно организовать структуру, URL, переключение языков и переводы контента.
WordPress по умолчанию не имеет встроенного механизма для многоязычности, поэтому для реализации используются плагины и кастомные решения.
Выбор плагина для многоязычности: обзор популярных решений
WPML — комплексный и мощный
WPML — один из самых популярных платных плагинов для многоязычности. Он поддерживает перевод страниц, записей, таксономий, меню и даже строк интерфейса темы. Имеет удобный интерфейс и совместим со многими темами и плагинами.
Основные плюсы WPML:
- Поддержка SEO (перевод URL и метатегов)
- Управление переводчиками и переводами
- Совместимость с WooCommerce
Polylang — бесплатный и легкий
Polylang — бесплатный плагин с возможностью расширения платными дополнениями. Позволяет создавать многоязычные сайты с выбором языка, переводом постов, страниц, таксономий и меню.
Преимущества Polylang:
- Простой интерфейс
- Бесплатная версия покрывает основные задачи
- Совместимость с большинством тем и плагинов
TranslatePress — визуальный перевод
TranslatePress позволяет переводить сайт прямо с фронтенда в визуальном режиме. Это удобно, если хочется сразу видеть, как выглядят переводы. Плагин поддерживает SEO и интеграцию с Google Translate для автоматического перевода.
Настройка многоязычности без плагинов: базовый пример кода
Если вам нужна лёгкая кастомизация или вы хотите минимизировать количество плагинов, можно реализовать простую многоязычность с помощью собственных функций. Рассмотрим базовый пример переключателя языков и хранения языка пользователя в сессии.
Добавим в functions.php темы следующий код:
function wplangs_set_language() {
if (isset($_GET['lang'])) {
$lang = sanitize_text_field($_GET['lang']);
if (in_array($lang, array('ru', 'en'))) {
setcookie('wplangs_language', $lang, time() + 3600 * 24 * 30, COOKIEPATH, COOKIE_DOMAIN);
$_COOKIE['wplangs_language'] = $lang;
}
}
}
add_action('init', 'wplangs_set_language');
function wplangs_get_language() {
if (isset($_COOKIE['wplangs_language'])) {
return $_COOKIE['wplangs_language'];
}
return 'ru'; // язык по умолчанию
}Этот код проверяет наличие параметра lang в URL, сохраняет выбранный язык в cookie и возвращает текущий язык сайта. Далее можно использовать функцию wplangs_get_language() для вывода контента на нужном языке, например:
if (wplangs_get_language() === 'en') {
echo 'Welcome to our website!';
} else {
echo 'Добро пожаловать на наш сайт!';
}Организация URL для многоязычных сайтов
Очень важно настроить корректные URL для разных языков. Обычно используют три подхода:
- Поддомены: en.example.com, ru.example.com
- Поддиректории: example.com/en/, example.com/ru/
- Параметры в URL: example.com?lang=en
Поддиректории — самый популярный и SEO-дружественный способ. Для этого нужно настроить правила перезаписи в .htaccess и добавить обработку языка в WordPress.
Пример добавления rewrite правила в functions.php для поддиректорий:
function wplangs_add_rewrite_rules() {
add_rewrite_rule('^([a-z]{2})/?', 'index.php?lang=$matches[1]', 'top');
}
add_action('init', 'wplangs_add_rewrite_rules');
function wplangs_add_query_vars($vars) {
$vars[] = 'lang';
return $vars;
}
add_filter('query_vars', 'wplangs_add_query_vars');Перевод контента: советы и рекомендации
Перевод можно выполнять вручную или с помощью автоматических сервисов. При ручном переводе рекомендуется хранить каждую языковую версию как отдельный пост, связанный через мета-поля или кастомные таксономии.
Если используется плагин, он обычно управляет связями и переключением автоматически. В случае собственной реализации можно создать кастомное поле, например wplangs_translation_of, где хранится ID оригинального поста.
Пример запроса для вывода перевода поста на нужном языке:
function wplangs_get_translation($post_id, $lang) {
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'wplangs_translation_of',
'value' => $post_id,
'compare' => '='
),
array(
'key' => 'wplangs_language',
'value' => $lang,
'compare' => '='
)
)
);
$query = new WP_Query($args);
if ($query->have_posts()) {
return $query->posts[0];
}
return null;
}Вывод переключателя языков
Для удобства пользователей нужен переключатель языков. Можно сделать простой список или селект с ссылками на поддиректории или с параметрами в URL.
Пример простого переключателя:
function wplangs_language_switcher() {
$current_lang = wplangs_get_language();
$langs = array('ru' => 'Русский', 'en' => 'English');
echo '<ul class="wplangs-switcher">';
foreach ($langs as $code => $name) {
$class = ($code === $current_lang) ? 'class="active"' : '';
$url = add_query_arg('lang', $code);
echo "<li {$class}><a href=\"{$url}\">{$name}</a></li>";
}
echo '</ul>';
}Этот код выводит список языков с активным текущим и меняет параметр lang в URL.
SEO и многоязычные сайты на WordPress
Для SEO важно правильно указывать hreflang, создавать отдельные страницы для каждого языка и не дублировать контент. Плагины WPML и Polylang автоматически формируют метатеги hreflang. При самостоятельной реализации можно добавить их через хук wp_head:
function wplangs_add_hreflang_tags() {
$langs = array('ru', 'en');
$current_url = home_url(add_query_arg(array(), $GLOBALS['wp']->request));
foreach ($langs as $lang) {
$url = add_query_arg('lang', $lang, $current_url);
echo "<link rel=\"alternate\" hreflang=\"{$lang}\" href=\"{$url}\" />\n";
}
}
add_action('wp_head', 'wplangs_add_hreflang_tags');Это поможет поисковым системам правильно индексировать версии страниц на разных языках.
Заключение
Создание полифонического сайта на WordPress — задача вполне решаемая как с помощью популярных плагинов, так и средствами кастомной разработки. Правильный выбор подхода зависит от задач, бюджета и технических возможностей. В любом случае, важно обеспечить удобный интерфейс переключения языков, корректную структуру URL и качественный перевод контента.