wplang.ru wordpress WP Lang

WooCommerce: правильное отображение разных валют при мультиязычности

Проблема с отображением валют в мультиязычном WooCommerce

При работе с WooCommerce на мультиязычном сайте часто возникает задача показывать цены товаров в разных валютах в зависимости от выбранного языка. Например, для сайта на русском показывать цены в рублях, для английской версии — в долларах, а для европейской — в евро. Без правильной настройки валюта будет одна на всех языках, или отображение курсов будет некорректным, что приводит к потере доверия клиентов и снижению конверсии.

Диагностика проблемы отображения валют

Чтобы проверить, как работает отображение валют на вашем сайте, выполните следующие шаги:

  • Выберите разные языки на сайте, посмотрите, меняется ли валюта в ценах товаров.
  • Проверьте настройки WooCommerce → Валюты и валютные переключатели (если используется плагин мультивалютности).
  • Если используется плагин мультиязычности (WPML, Polylang), убедитесь, что он совместим с выбранным плагином мультвалютности.
  • Проверьте, нет ли кэширования, которое мешает обновлению валюты.

Решение: настройка мультвалютности с WPML и WooCommerce

WPML поддерживает работу с мультивалютами через дополнение WooCommerce Multilingual. Оно позволяет назначать валюты для каждого языка и автоматически конвертировать цены.

Шаг 1. Установка и активация WooCommerce Multilingual

Убедитесь, что у вас установлены и активны:

  • WooCommerce
  • WPML Multilingual CMS
  • WooCommerce Multilingual

Эти плагины доступны на официальных сайтах или в репозитории WPML.

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

В админке WordPress перейдите в WooCommerce → WooCommerce Multilingual → Multi-currency. Включите мультивалютность и добавьте нужные валюты:

  • Добавьте рубли (RUB) для русского языка
  • Добавьте доллары (USD) для английского
  • Добавьте евро (EUR) для европейских языков

Назначьте валюту по умолчанию для каждого языка. Например:

ЯзыкВалютаКурс к базовой валюте
Русский (ru)RUB1 (базовая валюта)
Английский (en)USD0.013
Немецкий (de)EUR0.012

Шаг 3. Проверка и настройка конвертации курсов

Можно включить автоматическое обновление курсов валют или задать их вручную. Для автоматизации используйте API, например, Open Exchange Rates, и введите API-ключ в настройках плагина.

Шаг 4. Настройка переключателя валют на сайте

WooCommerce Multilingual предлагает виджет переключения валют, который можно добавить в сайдбар или шапку. Для этого:

  • Перейдите в Внешний вид → Виджеты
  • Добавьте виджет WooCommerce Currency Switcher в нужную область
  • Настройте отображение и стили

Проверка результата после внедрения

Чтобы убедиться, что всё работает корректно:

  • Переключите язык сайта и проверьте, что цены меняются на соответствующую валюту.
  • Добавьте товар в корзину на одном языке, затем переключитесь на другой и проверьте, что валюта и цена обновились.
  • Оформите тестовый заказ на разных языках и проверьте, что в админке WooCommerce корректно отображаются суммы в нужной валюте.

Частые ошибки и способы их исправления

  • Валюта не меняется при переключении языка
    Причина: мультивалютность не включена или WooCommerce Multilingual не активен.
    Решение: проверьте активацию плагина и настройки мультивалютности.
  • Цены не конвертируются корректно
    Причина: не заданы или устарели курсы валют.
    Решение: обновите курсы вручную или настройте автоматическое обновление.
  • Конфликты с кешированием
    Причина: кеш плагинов или серверное кеширование сохраняет старые значения.
    Решение: очистите кеш сайта, отключите кеширование на страницах корзины и оформления заказа.
  • Валюта не отображается в письмах
    Причина: шаблоны писем не поддерживают мультивалютность.
    Решение: отредактируйте шаблоны, используя функции WooCommerce Multilingual, например icl_get_languages() для определения языка и валюты.

Практические советы по безопасности и производительности

  • Отключайте кеширование на страницах корзины, оформления заказа и аккаунта, чтобы избежать ошибок с отображением валют.
  • Автоматическое обновление курсов валют лучше настраивать с ограничением по времени (например, раз в сутки), чтобы не создавать лишнюю нагрузку.
  • Всегда тестируйте мультивалютность на тестовом сайте перед внедрением на живом.
  • Следите за обновлениями плагинов WPML и WooCommerce Multilingual, так как они регулярно улучшают совместимость и безопасность.

Примеры кода для кастомизации валюты в WooCommerce

Если нужно программно изменить валюту в зависимости от языка без плагина WooCommerce Multilingual, можно использовать хук woocommerce_currency. Пример:

add_filter('woocommerce_currency', function($currency) {
    $lang = substr(get_locale(), 0, 2); // Получаем язык сайта
    switch ($lang) {
        case 'ru':
            return 'RUB';
        case 'en':
            return 'USD';
        case 'de':
            return 'EUR';
        default:
            return $currency;
    }
});

Этот код изменит валюту в зависимости от текущего языка сайта. Однако в этом случае вам нужно вручную управлять конвертацией цен.

Для конвертации цен можно воспользоваться фильтром woocommerce_product_get_price:

add_filter('woocommerce_product_get_price', 'convert_price_by_currency', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'convert_price_by_currency', 10, 2);
add_filter('woocommerce_product_get_sale_price', 'convert_price_by_currency', 10, 2);

function convert_price_by_currency($price, $product) {
    $currency = get_woocommerce_currency();
    $rates = [
        'RUB' => 1,
        'USD' => 0.013,
        'EUR' => 0.012
    ];
    if (isset($rates[$currency])) {
        return $price * $rates[$currency];
    }
    return $price;
}
×

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

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

пишет статьи

готовит SEO

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

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