wplangs.ru wordpress WP Langs

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

Проблема: почему атрибуты WooCommerce не переводятся автоматически

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

Основные причины:

  • Атрибуты и их термины хранятся в отдельной таксономии pa_{attribute_name} и требуют отдельного перевода.
  • Мультиязычные плагины часто не интегрируются с пользовательскими таксономиями WooCommerce по умолчанию.
  • Автоматический перевод атрибутов требует программной обработки или использования специальных плагинов с API переводов.

Как проверить, что атрибуты действительно не переведены

1. В админке WordPress перейдите в Товары > Атрибуты, выберите нужный атрибут.

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

3. На фронтенде переключитесь на другой язык и проверьте отображение атрибутов в карточках товаров — они останутся на исходном языке.

Пошаговое решение: автоматический перевод атрибутов WooCommerce с помощью PHP и API перевода

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

В примере используем Google Translate API (Google Cloud Translation API). Для работы вам нужен ключ API с включенным сервисом Cloud Translation.

function translate_text_google_api($text, $target_lang) {
    $apiKey = 'ВАШ_GOOGLE_API_KEY';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;

    $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. Получение терминов атрибута и перевод

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

function translate_woocommerce_attribute_terms($attribute_slug, $target_lang) {
    $taxonomy = 'pa_' . $attribute_slug;
    $terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
    
    foreach ($terms as $term) {
        $translated_name = translate_text_google_api($term->name, $target_lang);
        if ($translated_name) {
            // Создаем перевод как новый термин с суффиксом языка
            $translated_term_slug = $term->slug . '-' . $target_lang;
            if (!term_exists($translated_term_slug, $taxonomy)) {
                wp_insert_term($translated_name, $taxonomy, ['slug' => $translated_term_slug]);
            }
            // Здесь можно связать оригинальный и переведенный термин через мета или сторонний механизм
        }
    }
}

3. Вызов функции для нужного атрибута и языка

add_action('init', function() {
    if (is_admin()) {
        // Переводим атрибут 'color' на английский
        translate_woocommerce_attribute_terms('color', 'en');
    }
});

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

  • Зайдите в админку > Товары > Атрибуты > Термины соответствующего атрибута.
  • Убедитесь, что появились новые термины с переводом и суффиксом языка в слаге.
  • На фронтенде переключитесь на язык перевода и проверьте отображение атрибутов в карточках товаров.
  • Если используете кеш, очистите его после внесения изменений.

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

  • Ошибка: Нет перевода терминов или они дублируются.
    Причина: Не настроена логика связи оригинальных терминов с переводами.
    Решение: Используйте метаполя для связи или мультиязычные плагины с поддержкой терминов.
  • Ошибка: API переводов возвращает ошибки или лимиты.
    Причина: Превышение квоты Google API, неправильный ключ.
    Решение: Проверьте ключ, лимиты и логи ошибок wp_remote_post.
  • Ошибка: Переводы не отображаются на сайте.
    Причина: Кеширование, неправильное отображение терминов.
    Решение: Очистите кеш, проверьте шаблоны вывода атрибутов.

Практические советы по оптимизации и безопасности

  • Не вызывайте массовый перевод терминов на каждом запросе — ограничьте вызов через админский триггер или CRON.
  • Кэшируйте результаты перевода, например, в метаполях терминов, чтобы не обращаться к API при каждом выводе.
  • Обрабатывайте ошибки API, чтобы не блокировать загрузку сайта.
  • Используйте безопасное хранение и ограничьте доступ к API-ключам.
  • Для SEO лучше использовать отдельные URL с переводами атрибутов, чтобы поисковики индексировали правильные версии.

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

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

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее