wplangs.ru wordpress WP Langs

WooCommerce: что делать, если не работает автоперевод атрибутов и вариантов товаров

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

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

  • Правильно ли подключены хуки для автоперевода именно атрибутов и терминов таксономии?
  • Передаются ли данные атрибутов в функцию автоперевода в нужном формате?
  • Зарегистрированы ли атрибуты как переводимые в плагине мультиязычности (WPML, Polylang, WPLangs и др.)?
  • Нет ли конфликтов с кэшированием, которые мешают обновлению перевода?
  • Используется ли правильный приоритет вызова функций для перехвата атрибутов и вариантов на этапе сохранения/обновления товара?

Проверка регистрации атрибутов как переводимых

В админке WooCommerce зайдите в Товары > Атрибуты. Убедитесь, что для каждого атрибута включена поддержка перевода в вашем мультиязычном плагине.

Если используется WPML, например, перейдите WPML > Настройки > Таксономии и проверьте, что атрибуты (product attributes) отмечены как «переводимые».

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

1. Добавьте перехватчик сохранения атрибутов для запуска автоперевода

Для автоматического запуска перевода при обновлении товара можно использовать хук woocommerce_save_product_variation и save_post_product для самих товаров:

add_action('woocommerce_save_product_variation', 'auto_translate_product_variation', 20, 2);
add_action('save_post_product', 'auto_translate_product_attributes', 20, 3);

function auto_translate_product_variation($variation_id, $i) {
    $variation = wc_get_product($variation_id);
    $attributes = $variation->get_attributes();
    foreach ($attributes as $name => $value) {
        // Запускаем автоперевод значения атрибута
        $translated_value = my_autotranslate_function($value);
        // Обновляем значение атрибута вариации
        $variation->set_attribute($name, $translated_value);
    }
    $variation->save();
}

function auto_translate_product_attributes($post_id, $post, $update) {
    if ($post->post_type !== 'product') return;
    $product = wc_get_product($post_id);
    $attributes = $product->get_attributes();
    foreach ($attributes as $attr_name => $attr_obj) {
        if ($attr_obj->is_taxonomy()) {
            $terms = wp_get_post_terms($post_id, $attr_obj->get_name());
            foreach ($terms as $term) {
                $translated_name = my_autotranslate_function($term->name);
                wp_update_term($term->term_id, $term->taxonomy, ['name' => $translated_name]);
            }
        } else {
            $translated_value = my_autotranslate_function($attr_obj->get_options()[0]);
            $attr_obj->set_options([$translated_value]);
        }
    }
    $product->save();
}

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

2. Очистите кэш и обновите переводы

После внесения изменений очистите кэш сайта (если используете кеширующие плагины) и CDN. Затем откройте страницу товара в админке и сохраните его заново, чтобы триггерить автоперевод.

3. Проверьте правильность хранения переводов в базе

В базе данных таблице wp_term_taxonomy и wp_terms должны появиться обновленные имена терминов с переводами. Аналогично, метаполя товаров должны обновиться.

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

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

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

  • Атрибуты не отмечены как переводимые в мультиязычном плагине. Проверьте настройки WPML/Polylang/WPLangs и включите перевод атрибутов.
  • Функция автоперевода вызывается с неправильными параметрами. Убедитесь, что вы передаете корректные значения терминов и строк в функцию перевода.
  • Кэш не сбрасывается, старые данные показываются на фронтенде. Очистите кэш плагинов и серверный кэш.
  • Перевод не сохраняется в базе. Проверьте права пользователя и возможность обновления терминов через wp_update_term().

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

  • Не запускайте автоперевод при каждом сохранении без условий, чтобы избежать излишней нагрузки и лимитов API.
  • Используйте transientы или опции для кеширования результатов перевода.
  • Проверяйте права доступа перед изменением терминов, чтобы не допустить перезаписи системных данных.
  • Логируйте ошибки и результаты перевода для отладки и мониторинга.

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

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

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

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

пишет статьи

готовит SEO

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

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