wplangs.ru wordpress WP Langs

Как создать полифонический сайт на WordPress: настройка многоязычности

В современном мире создание многоязычного сайта — задача, с которой сталкиваются многие владельцы проектов. 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 и качественный перевод контента.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше