Диагностика проблем с переводом вариативных товаров в WooCommerce
Часто при работе с мультиязычностью WooCommerce возникает проблема: переводы вариативных товаров либо отсутствуют, либо отображаются некорректно. Обычно это проявляется в следующих симптомах:
- Переключение языка не обновляет варианты товара;
- Описание вариаций на другом языке не отображается или дублирует основной язык;
- Артикулы (SKU) и цены остаются на языке оригинала;
- Проблемы с синхронизацией атрибутов и вариаций между языками.
Причина — неправильная настройка перевода атрибутов и вариаций, а также особенности работы плагина перевода (WPML, Polylang и др.).
Пошаговое решение проблемы: корректный перевод вариативных товаров
1. Правильная настройка атрибутов как глобальных
Для успешного перевода вариаций необходимо использовать глобальные атрибуты WooCommerce, а не локальные (созданные в карточке товара).
Перейдите в Товары > Атрибуты, создайте нужные атрибуты и добавьте термины для каждого языка.
2. Перевод терминов атрибутов
В зависимости от плагина перевода нужно перевести термины атрибутов на все языки. Для WPML это делается в WPML > Taxonomy Translation, для Polylang — в списке терминов атрибутов.
3. Синхронизация вариаций с переводом атрибутов
После перевода терминов создайте вариации с использованием глобальных атрибутов. При переключении языка WooCommerce будет подставлять корректные переводы.
4. Перевод описаний вариаций и SKU
Для каждого вариативного товара в редакторе перевода откройте вариации и заполните локализованные описания, а также корректные артикулы (SKU), если они отличаются.
5. Использование фильтров для корректного отображения
Если стандартные методы не помогают, можно добавить фильтр, который заставит WooCommerce корректно подставлять переводы вариаций. Например, для WPML:
add_filter('woocommerce_product_variation_get_price', function($price, $variation) {
$translated_id = apply_filters('wpml_object_id', $variation->get_id(), 'product_variation', false, ICL_LANGUAGE_CODE);
if ($translated_id && $translated_id !== $variation->get_id()) {
$translated_variation = wc_get_product($translated_id);
return $translated_variation ? $translated_variation->get_price() : $price;
}
return $price;
}, 10, 2);
Проверка результата после внедрения
- Переключитесь на другой язык на фронтенде;
- Откройте страницу вариативного товара;
- Проверьте, что атрибуты и вариации отображаются на нужном языке;
- Проверьте, что описания вариаций и SKU соответствуют переводу;
- Добавьте товар в корзину, чтобы убедиться, что данные корректно передаются.
Частые ошибки и как их исправить
- Использование локальных атрибутов: создавайте атрибуты только в разделе
Товары > Атрибуты, иначе перевод не синхронизируется. - Отсутствие перевода терминов: не забывайте переводить все термины атрибутов, иначе вариации будут показываться на основном языке.
- Неправильное связывание вариаций в переводах: проверьте, что вариации перевода связаны с переводами атрибутов, иначе будет дублирование или ошибки.
- Кэширование: иногда проблемы вызваны кэшем страниц или объектов — очистите кэш после изменений.
Практические советы по производительности и безопасности
- Используйте специализированные плагины перевода, поддерживающие WooCommerce, например WPML или Polylang Pro с WooCommerce Multilingual.
- Минимизируйте количество вариаций, так как большое их число может замедлять загрузку и работать некорректно с переводами.
- Для ускорения работы используйте объектный кэш (Redis, Memcached) и плагин Clearfy Pro для очистки неиспользуемых языковых файлов.
- Регулярно проверяйте актуальность версий WooCommerce и плагинов перевода — устаревшие версии часто вызывают конфликты и ошибки.
- Избегайте прямого редактирования файлов плагинов — используйте хуки и фильтры в дочерней теме.
| Способ | Преимущества | Недостатки |
|---|---|---|
| Перевод глобальных атрибутов и терминов | Правильная структура, совместимость с WooCommerce | Требует времени на настройку и перевод |
| Использование фильтров для подмены данных | Гибкость, можно исправить ошибки без изменения базы | Нужны навыки PHP, возможны конфликтные ситуации |
| Плагины автоперевода | Автоматизация перевода | Качество перевода ниже, возможны ошибки в вариациях |
Чек-лист для корректного перевода вариативных товаров в WooCommerce
- Созданы глобальные атрибуты в
Товары > Атрибуты - Переведены все термины атрибутов для каждого языка
- Вариации созданы с использованием глобальных атрибутов
- Переведены описания вариаций и SKU
- Очистлен кэш после всех изменений
- Проверена работа на фронтенде для всех языков
- Добавлен фильтр для корректной подстановки данных (если требуется)