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

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

В интернет-магазинах на WooCommerce часто возникает задача обеспечить многоязычность описаний товаров. При этом стандартные решения, такие как WPML или Polylang, требуют ручного перевода или подключения дополнительных платных модулей. Без правильной настройки автоперевода описания товаров не переводятся, что приводит к ухудшению пользовательского опыта и потере клиентов.

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

  • Отсутствие интеграции автопереводчика с метаполями или полями WooCommerce.
  • Неправильное использование хуков, из-за чего перевод не применяется к описаниям.
  • Кэширование, мешающее обновлению перевода на фронтенде.

Пошаговое решение: как реализовать автоперевод описаний товаров

1. Выбор автопереводчика и подготовка API

Для автоматического перевода можно использовать бесплатные или платные API, например, Google Translate API, DeepL API или Microsoft Translator. В данном примере рассмотрим интеграцию с Google Translate API (v2).

define('GOOGLE_TRANSLATE_API_KEY', 'ваш_ключ_от_api');

2. Создание функции автоперевода описания товара

Добавьте в functions.php темы или в собственный плагин следующий код для перевода:

function wpt_translate_text($text, $target_language = 'en') {
    if (empty($text)) {
        return $text;
    }

    $apiKey = GOOGLE_TRANSLATE_API_KEY;
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;

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

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

    $response = wp_remote_post($url, $args);

    if (is_wp_error($response)) {
        return $text; // Возвращаем оригинал при ошибке
    }

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

    return $text;
}

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

Используйте хук woocommerce_process_product_meta для запуска перевода при обновлении товара в админке. Пример для перевода описания на английский:

add_action('woocommerce_process_product_meta', 'wpt_autotranslate_product_description', 20, 1);
function wpt_autotranslate_product_description($post_id) {
    $product = wc_get_product($post_id);
    if (!$product) {
        return;
    }

    $original_description = $product->get_description();
    $translated_description = wpt_translate_text($original_description, 'en');

    // Сохраняем переведенное описание в пользовательское поле
    update_post_meta($post_id, '_translated_description_en', $translated_description);
}

4. Вывод переведенного описания на фронтенде

Для отображения перевода добавьте фильтр на вывод описания товара, который будет подставлять переведенный текст:

add_filter('the_content', 'wpt_show_translated_description', 20);
function wpt_show_translated_description($content) {
    if (is_product()) {
        global $post;
        $translated = get_post_meta($post->ID, '_translated_description_en', true);
        if (!empty($translated)) {
            return $translated;
        }
    }
    return $content;
}

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

1. Зайдите в админку WooCommerce и откройте редактирование товара.

2. Измените описание товара и сохраните.

3. Проверьте, что в метаполе _translated_description_en появилось переведенное описание (через phpMyAdmin или плагин Advanced Custom Fields).

4. На странице товара на фронтенде должно показываться переведённое описание вместо оригинала (при условии, что язык сайта установлен на английский).

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

  • Ошибка 1: Появляется оригинальное описание, а перевод не отображается.
    Проверьте, что хук the_content применяется на странице товара. В некоторых темах описание выводится через функции темы — нужно адаптировать фильтр под конкретный вызов.
  • Ошибка 2: API Google возвращает ошибку или перевод не выполняется.
    Проверьте правильность API-ключа и настройки биллинга в Google Cloud Console.
  • Ошибка 3: Перевод сохраняется, но не обновляется при изменении описания.
    Проверьте, что функция автоперевода вызывается при каждом сохранении товара и что поле метаданных перезаписывается.

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

  • Не вызывайте автоперевод на каждом запросе — это сильно замедлит сайт и увеличит расходы API. Используйте сохранение перевода в метаполях.
  • Ограничьте частоту вызова API, например, только при обновлении описания.
  • Используйте transient или объектный кэш для хранения переведённых данных, если переводите динамический контент.
  • Храните API-ключ в wp-config.php или в настройках плагина с ограниченным доступом.
  • Для больших магазинов рассмотрите пакетные переводы через WP CLI для массовой обработки товаров.

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

МетодПлюсыМинусыПример использования
Плагин автоперевода (WPML, TranslatePress)Готовое решение, интеграция с WooCommerceПлатные модули, ограниченная кастомизацияУстановка и настройка через админку
Собственный код с API (пример выше)Полный контроль, гибкостьТребует навыков программирования, настройка APIХуки, wp_remote_post, метаполя
Автоперевод через AJAX на фронтендеДинамический перевод без нагрузки на серверЗадержка отображения, SEO проблемыAJAX-запросы к API при загрузке страницы
Как прописать автоперевод в WordPress через хуки и функции
20.12.2025
Как оптимизировать перевод тем и плагинов WordPress для быстродействия
09.01.2026
Как исправить проблему с переводом постоянных ссылок (Permalinks) в WordPress
09.12.2025
Как сделать перевод административной панели WordPress на русский язык
06.01.2026
Как автоматически переводить контент WordPress с помощью API DeepL
25.03.2026