wplangs.ru wordpress WP Langs

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

Проблема: необходимость автоматического перевода при создании товара в WooCommerce

При работе с многоязычными магазинами на WooCommerce часто возникает задача: при добавлении нового товара нужно автоматически переводить описание и атрибуты на другие языки без ручного копирования и вставки переводов. Это ускоряет загрузку каталога и снижает риск ошибок.

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

Если при создании товара вы добавляете описание и атрибуты только на одном языке, а остальные языки остаются пустыми, то:

  • Посетители на других языках видят пустое описание и характеристики.
  • SEO-оптимизация для переводных страниц ухудшается.
  • Ручной перевод занимает много времени и ресурсов.

Проверьте, как настроена мультиязычность: используете ли вы плагин типа WPML, Polylang, или собственные решения. Без поддержки перевода атрибутов автоматизация невозможна.

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

1. Подготовка: API для перевода

Для автоматического перевода понадобится подключение к внешнему сервису, например Google Translate API, DeepL или WPGPT от WPShop, если хотите интегрировать ИИ-перевод.

2. Хуки WooCommerce для перехвата сохранения товара

Используем хук save_post_product или woocommerce_process_product_meta для запуска функции перевода при сохранении товара.

add_action('woocommerce_process_product_meta', 'auto_translate_product_data', 20, 1);

3. Функция перевода описания и атрибутов

Пример кода с вызовом API перевода (упрощённый):

function auto_translate_product_data($post_id) {
    // Получаем основной язык и целевой
    $source_lang = 'ru';
    $target_lang = 'en';

    // Получаем описание на основном языке
    $product = wc_get_product($post_id);
    $description = $product->get_description();

    // Проверяем, переведено ли уже описание
    $translated_description = get_post_meta($post_id, '_translated_description_' . $target_lang, true);
    if (!$translated_description) {
        // Переводим описание через API
        $translated = my_translate_api_call($description, $source_lang, $target_lang);
        if ($translated) {
            // Сохраняем перевод в мета
            update_post_meta($post_id, '_translated_description_' . $target_lang, $translated);
            // Можно записать перевод в отдельный язык, если мультиязычность поддерживает
        }
    }

    // Аналогично переводим атрибуты
    $attributes = $product->get_attributes();
    foreach ($attributes as $attr_key => $attr) {
        if ($attr->is_taxonomy()) {
            // Для термов атрибута можно перевести названия терминов
            $terms = wp_get_post_terms($post_id, $attr->get_name());
            foreach ($terms as $term) {
                $translated_name = get_term_meta($term->term_id, '_translated_name_' . $target_lang, true);
                if (!$translated_name) {
                    $translated_term = my_translate_api_call($term->name, $source_lang, $target_lang);
                    if ($translated_term) {
                        update_term_meta($term->term_id, '_translated_name_' . $target_lang, $translated_term);
                    }
                }
            }
        } else {
            // Для пользовательских атрибутов переводим значения
            $value = $attr->get_options();
            $translated_values = [];
            foreach ($value as $val) {
                $translated_val = my_translate_api_call($val, $source_lang, $target_lang);
                $translated_values[] = $translated_val ?: $val;
            }
            // Сохраняем переведённые значения в мета или обновляем атрибут
            update_post_meta($post_id, '_translated_attr_' . $attr_key . '_' . $target_lang, $translated_values);
        }
    }
}

// Заглушка функции вызова API перевода
function my_translate_api_call($text, $source, $target) {
    // Реализуйте вызов вашего API здесь
    return 'Перевод: ' . $text; // временный заглушка
}

4. Интеграция с мультиязычным плагином

Если используете WPML или Polylang, нужно сохранять переводы в соответствующие языковые посты или термины, а не только в метаданные. Это требует дополнительного кода для создания или обновления переводов.

Как проверить, что автоматический перевод работает

  • Создайте новый товар с описанием и атрибутами на основном языке.
  • Сохраните товар и проверьте метаданные (через phpMyAdmin или плагин типа Adminer) на наличие переведённых текстов.
  • Перейдите на сайт с языком перевода и убедитесь, что описание и атрибуты отображаются с переводом.
  • Проверьте логи API вызовов для ошибок.

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

  • Перевод не запускается при сохранении товара: проверьте правильность использования хуков и приоритетов.
  • Переводы не сохраняются: убедитесь, что функции update_post_meta или update_term_meta вызываются с правильными ключами и что база данных доступна для записи.
  • Проблемы с мультиязычностью: при использовании WPML или Polylang нужно создавать переводы через их API, иначе переводы не будут видны на фронте.
  • API перевода отвечает ошибкой: проверьте корректность API ключа, лимиты запросов и формат входных данных.

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

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

Сравнение подходов к автоматическому переводу описания и атрибутов в WooCommerce

ПодходПреимуществаНедостатки
Встроенный перевод через WPML/PolylangИнтеграция с языковой системой, поддержка SEOТребует ручного перевода или платных дополнений
Собственный код с вызовом внешнего APIАвтоматизация, гибкость, кастомизацияТребует разработки, возможны ошибки, нагрузка на сервер
Плагины автоперевода (например, WPGPT)Простая установка, готовые решенияОграничения по количеству переводов, платные API
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее