wplangs.ru wordpress WP Langs

Автоматический перевод атрибутов и вариантов товаров WooCommerce в WordPress

Диагностика проблемы с переводом атрибутов WooCommerce

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

  • Атрибуты товаров отображаются только на основном языке.
  • Варианты атрибутов (термины) не переводятся и остаются на исходном языке.
  • Невозможность автоматически обновлять переводы при добавлении новых терминов.

Почему стандартные инструменты не решают задачу

WooCommerce по умолчанию не имеет встроенного механизма перевода атрибутов и терминов. Для этого используют сторонние плагины многоязычности (WPML, Polylang, TranslatePress), но даже с ними часто приходится вручную создавать переводы терминов атрибутов, что неудобно и занимает время.

Автоматизация перевода через API (например, Google Translate, DeepL) требует программного решения — перехвата создания/обновления терминов и отправки их на перевод с последующим сохранением результата.

Пошаговое решение: автоперевод атрибутов и терминов WooCommerce

1. Подготовка: подключение API перевода

Выберите API перевода, например, Google Translate API или DeepL. Для примера ниже используем Google Translate API с официальной PHP библиотекой.

require_once 'vendor/autoload.php';
use Google\Cloud\Translate\V2\TranslateClient;

$translate = new TranslateClient([
    'key' => 'ВАШ_API_КЛЮЧ'
]);

2. Отслеживание создания и обновления терминов атрибутов

WooCommerce хранит атрибуты как таксономии с префиксом pa_. Для автоматического перевода можно использовать хук created_term и edited_term, фильтруя по таксономиям атрибутов.

add_action('created_term', 'auto_translate_woocommerce_attribute_term', 10, 3);
add_action('edited_term', 'auto_translate_woocommerce_attribute_term', 10, 3);

function auto_translate_woocommerce_attribute_term($term_id, $tt_id, $taxonomy) {
    if (strpos($taxonomy, 'pa_') !== 0) {
        return; // Не атрибут
    }

    $term = get_term($term_id, $taxonomy);
    if (!$term) {
        return;
    }

    // Переводим название термина
    global $translate;
    $target_lang = 'ru'; // Целевой язык, например русский

    $translation = $translate->translate($term->name, [
        'target' => $target_lang
    ]);

    if (!empty($translation['text'])) {
        // Сохраняем перевод как метаданные термина
        update_term_meta($term_id, 'translated_name', sanitize_text_field($translation['text']));

        // Опционально: заменяем имя термина на перевод (для фронтенда)
        // wp_update_term($term_id, $taxonomy, ['name' => $translation['text']]);
    }
}

3. Отображение переведенных терминов на фронтенде

Чтобы покупатели видели переведенные атрибуты, нужно подменять вывод названия терминов. Например, через фильтр woocommerce_attribute_label или во время вывода атрибутов в шаблонах.

add_filter('woocommerce_attribute_label', 'replace_attribute_label_with_translation', 10, 2);

function replace_attribute_label_with_translation($label, $name) {
    $taxonomy = 'pa_' . $name;
    $term = get_term_by('slug', $name, $taxonomy);
    if (!$term) {
        return $label;
    }

    $translated = get_term_meta($term->term_id, 'translated_name', true);
    if (!empty($translated)) {
        return $translated;
    }
    return $label;
}

4. Автоматический перевод атрибутов при импорте товаров

Если вы импортируете товары с атрибутами, можно перехватывать процесс импорта и запускать функцию перевода для терминов, чтобы автоматизировать весь процесс.

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

  • Создайте новый атрибут с термином, например, цвет "Blue".
  • Проверьте в базе, что для термина появился мета-ключ translated_name со значением на целевом языке.
  • Откройте страницу товара на сайте — атрибут должен отображаться на целевом языке.
  • Проверьте, что при редактировании термина перевод обновляется автоматически.

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

  • API ключ не работает или ограничен: Проверьте настройки API Google Translate, убедитесь в отсутствии лимитов, корректности ключа.
  • Перевод не сохраняется: Убедитесь, что функция update_term_meta вызывается с корректным ID и что мета-данные не блокируются плагинами кэширования.
  • Атрибуты не отображаются переведёнными: Проверьте фильтры вывода и убедитесь, что они подключены и приоритеты правильные.
  • Конфликты с плагинами многоязычности: Некоторые плагины могут иметь собственные механизмы перевода атрибутов. В этом случае интеграция требует дополнительной настройки.

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

  • Кэшируйте результаты перевода в метаданных терминов, чтобы не вызывать API при каждом запросе.
  • Ограничьте вызовы API, чтобы избежать превышения квот, используйте очередь заданий (WP-Cron или сторонние сервисы).
  • Храните API ключи в wp-config.php или через защищённые переменные окружения, не в коде плагина.
  • Проверяйте корректность и безопасность входящих данных при сохранении терминов, избегайте XSS.

Сравнение способов перевода атрибутов WooCommerce

МетодПлюсыМинусы
Ручной перевод через WPML/PolylangТочный контроль перевода, поддержка SEOТрудозатратный, неудобен при большом количестве терминов
Автоматический перевод через API (код)Автоматизация, быстрое обновлениеЗависимость от качества API, возможные ошибки перевода
Использование готовых плагинов автопереводаПростота установки, интеграция с WooCommerceМожет быть дорого, ограниченные настройки
×

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

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

пишет статьи

готовит SEO

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

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