wplangs.ru wordpress WP Langs

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

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

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

  • Атрибуты товаров и их значения отображаются только на одном языке.
  • Ручное добавление переводов слишком трудоемко и подвержено ошибкам.
  • Плагины-переводчики не всегда корректно обрабатывают термины из WooCommerce.

Для диагностики проверьте, как именно хранятся атрибуты в базе данных. WooCommerce использует wp_terms, wp_term_taxonomy и wp_termmeta для атрибутов и их значений.

Пошаговое решение автоматического перевода атрибутов и свойств

1. Подключение к API перевода (например, Google Translate или WPGPT)

Для автоматизации перевода нужно реализовать вызов API. Ниже пример функции для перевода текста через Google Translate API (v2):

function translate_text_google($text, $target_lang = 'en') {
    $api_key = 'YOUR_GOOGLE_TRANSLATE_API_KEY';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;

    $data = [
        'q' => $text,
        'target' => $target_lang,
        'format' => 'text'
    ];

    $response = wp_remote_post($url, [
        'body' => json_encode($data),
        'headers' => [
            'Content-Type' => 'application/json'
        ]
    ]);

    if (is_wp_error($response)) {
        return false;
    }

    $body = json_decode(wp_remote_retrieve_body($response), true);
    return $body['data']['translations'][0]['translatedText'] ?? false;
}

2. Получение атрибутов и их значений WooCommerce

Атрибуты товаров хранятся как таксономии с префиксом pa_. Для получения всех атрибутов используйте:

$attribute_taxonomies = wc_get_attribute_taxonomies();

Для получения терминов (значений) атрибута:

$terms = get_terms(['taxonomy' => 'pa_color', 'hide_empty' => false]);

3. Автоматический перевод и обновление терминов

Пример кода, который переводит название атрибута и его терминов, а затем создает новую таксономию для перевода (например, pa_color_en):

function translate_wc_attributes_and_terms($target_lang = 'en') {
    $attribute_taxonomies = wc_get_attribute_taxonomies();

    foreach ($attribute_taxonomies as $attr) {
        $original_taxonomy = wc_attribute_taxonomy_name($attr->attribute_name); // например, pa_color

        // Перевод названия атрибута
        $translated_name = translate_text_google($attr->attribute_label, $target_lang);
        if (!$translated_name) continue;

        // Создаем новую таксономию для перевода атрибута
        $translated_taxonomy = $original_taxonomy . '_' . $target_lang; // например, pa_color_en

        // Получаем термины оригинального атрибута
        $terms = get_terms(['taxonomy' => $original_taxonomy, 'hide_empty' => false]);
        foreach ($terms as $term) {
            // Переводим название термина
            $translated_term_name = translate_text_google($term->name, $target_lang);
            if (!$translated_term_name) continue;

            // Проверяем, существует ли уже термин в переведенной таксономии
            $existing_term = get_term_by('name', $translated_term_name, $translated_taxonomy);
            if (!$existing_term) {
                // Создаем термин в переводе
                wp_insert_term($translated_term_name, $translated_taxonomy);
            }
        }
    }
}

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

  • В админке WordPress проверьте наличие новых таксономий с суффиксом языка (pa_color_en).
  • Убедитесь, что термины в новых таксономиях содержат переводы.
  • На фронтенде подключите нужные таксономии к товарам в зависимости от текущего языка.
  • Проверьте, что атрибуты и их значения отображаются корректно на нужном языке.

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

  • Ошибка: Нет перевода, функция возвращает false.
    Причина: Неверный API ключ или превышен лимит запросов.
    Решение: Проверьте ключ API, ограничения тарифа, логи ошибок WP.
  • Ошибка: Термины не создаются, возникает ошибка при вызове wp_insert_term.
    Причина: Таксономия не зарегистрирована.
    Решение: Зарегистрируйте новую таксономию программно перед созданием терминов.
  • Ошибка: Переводы не отображаются на сайте.
    Причина: Фронтенд шаблон не выводит новые таксономии.
    Решение: Добавьте поддержку новых таксономий в шаблоны и фильтры WooCommerce.

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

  • Кэшируйте результаты перевода с помощью Transients API, чтобы не делать повторные вызовы к API.
  • Используйте асинхронные задачи (WP-Cron или очереди) для перевода большого количества терминов, чтобы избежать таймаутов.
  • Защищайте API ключи — храните их в wp-config.php и не публикуйте в открытом доступе.
  • Регулярно проверяйте и обновляйте используемые версии WooCommerce и WordPress для совместимости.

Сравнение вариантов реализации автоматического перевода атрибутов

МетодПлюсыМинусыКогда использовать
Плагины-переводчики (WPML, Polylang)Готовое решение, интеграция с WooCommerceПлатные, могут не поддерживать все атрибутыЕсли нужен полный мультиязычный сайт без кастомов
Собственный код с Google Translate APIГибкость, контроль, можно интегрировать с вашим APIТребует программирования, возможны ошибкиДля автоматического перевода с индивидуальной логикой
Использование WPGPT (через https://wpshop.ru/plugins/wpgpt?utm_source=wplangs.ru&utm_medium=article&utm_campaign=woocommerce-avtomaticheskiy-perevod-svoystv-i-atributov-tovarov)Автоматизация на базе ИИ, высокая точностьНеобходима подписка, зависит от качества моделиДля современных решений с ИИ и автоматизацией
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее