Почему важно добавить мультиязычность в WooCommerce
Для интернет-магазина на WooCommerce расширение на несколько языков увеличивает охват аудитории и улучшает пользовательский опыт. Многие решают эту задачу с помощью плагинов, например, WPML или Polylang, но они увеличивают нагрузку и могут конфликтовать с другими расширениями. В этой статье рассмотрим, как реализовать базовую мультиязычность без сторонних плагинов, используя стандартные средства WordPress и WooCommerce.
Диагностика проблемы: как понять, что нужна мультиязычность
Если у вас есть аудитория из разных стран или регионов, и вы получаете запросы на поддержку на разных языках, то это явный сигнал для внедрения мультиязычности. Также если вы планируете расширять продажи за границу, перевод каталога и интерфейса обязательны.
Типичные признаки отсутствия мультиязычности:
- Все товары и категории только на одном языке
- Отсутствие переключателя языков на сайте
- Клиенты не могут выбрать язык оформления заказа
Пошаговое решение: создание мультиязычности без плагинов
1. Создание языковых поддоменов или папок
Первый шаг — определить структуру URL для разных языков:
- subdomain.example.com — для каждого языка свой поддомен
- example.com/en, example.com/ru — языковые папки
Настройте в настройках хостинга соответствующие поддомены или папки, а в WordPress используйте мультисайт.
2. Настройка мультисайта WordPress
Для поддержки нескольких языков создайте сеть мультисайтов:
define('WP_ALLOW_MULTISITE', true);Откройте «Инструменты» > «Сеть сайтов», настройте мультисайт с поддоменами или папками.
Каждый сайт сети будет отдельным языковым разделом. Например, основной сайт — русский, второй сайт — английский.
3. Копирование и перевод контента WooCommerce
В каждом сайте сети создайте продукты, категории и страницы на нужном языке. Для синхронизации товаров можно написать кастомный скрипт, который будет копировать товар из одного сайта в другой с необходимым переводом.
function copy_product_to_site( $product_id, $target_blog_id ) {
switch_to_blog( $target_blog_id );
$product = wc_get_product( $product_id );
if ( ! $product ) {
restore_current_blog();
return false;
}
$new_product = new WC_Product();
$new_product->set_name( $product->get_name() );
$new_product->set_regular_price( $product->get_regular_price() );
$new_product->set_description( $product->get_description() );
$new_product->save();
restore_current_blog();
return $new_product->get_id();
}Это базовый пример, в реальности нужно учитывать метаданные, атрибуты, изображения.
4. Добавление переключателя языков
В шаблоне добавьте простой переключатель, который будет вести на соответствующий сайт сети:
<ul class="language-switcher">
<li><a href="https://example.com/">Русский</a></li>
<li><a href="https://en.example.com/">English</a></li>
</ul>Проверка результата после внедрения
- Перейдите на каждый языковой сайт, проверьте язык интерфейса и контента
- Создайте заказ на каждом языке, убедитесь, что оформление и письма соответствуют языку
- Проверьте, что ссылки переключателя ведут на правильный сайт
- Проверьте, что товары и категории отображаются корректно для каждого языка
Частые ошибки и как их исправить
- Ошибка: После переключения языка пользователь попадает на главную вместо соответствующей страницы.
Причина: Некорректный URL или отсутствие синхронизации slug.
Решение: Используйте одинаковую структуру ссылок для товаров и категорий на всех языках и настройте редиректы. - Ошибка: Разные валюты не отображаются корректно.
Причина: WooCommerce по умолчанию не поддерживает разные валюты на мультисайте.
Решение: Настройте валюту для каждого сайта через WooCommerce > Настройки. - Ошибка: Копирование товаров не учитывает все данные.
Причина: Скрипт копирует только базовые поля.
Решение: Расширьте копирование, добавьте обработку метаданных, атрибутов и галерей.
Практические советы по безопасности и производительности
- Регулярно делайте резервные копии мультисайта — мультисайт усложняет восстановление.
- Используйте кеширование на уровне сервера и плагинов, учитывая, что мультиязычность увеличивает количество запросов.
- Контролируйте права доступа для администраторов и редакторов каждого сайта, чтобы не было случайного удаления контента.
- Оптимизируйте изображения под каждый язык отдельно — разные рынки могут требовать разные форматы и размеры.
Сравнение вариантов реализации мультиязычности
| Метод | Плюсы | Минусы | Пример |
|---|---|---|---|
| Плагины (WPML, Polylang) | Простота, автоматизация, поддержка SEO | Нагрузка, конфликты, стоимость | WPML — платный, много функций |
| Мультисайт WordPress | Контроль, минимальная нагрузка, бесплатный | Сложность настройки, ручной перевод | Собственный код для синхронизации |
| Отдельные сайты | Максимальная изоляция | Сложное управление, SEO | Полная независимость сайтов |