Как использовать Polylang для автоперевода метаданных товаров WooCommerce

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

При использовании Polylang с WooCommerce многие сталкиваются с тем, что стандартные поля продуктов переводятся корректно, а метаданные (custom fields), такие как дополнительные характеристики или технические параметры, остаются на исходном языке. Это происходит потому, что Polylang по умолчанию не переводит произвольные поля, и необходимо написать дополнительный код для их синхронизации или автоперевода.

Пошаговое решение автоперевода метаданных WooCommerce с Polylang

1. Определите, какие метаданные нужно переводить

Сначала выделите ключи метаданных, которые должны быть переведены. Например, _product_technical_spec, _custom_attribute_color и т.п. Это важно, чтобы не пытаться переводить лишние данные.

2. Используйте хук pll_save_post для синхронизации метаданных при сохранении перевода

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

add_action('pll_save_post', 'sync_woocommerce_product_meta', 10, 2);
function sync_woocommerce_product_meta($post_id, $lang){
    $original_id = pll_get_post($post_id, 'en'); // замените 'en' на язык оригинала
    if(!$original_id) return;

    // Список метаданных для перевода
    $meta_keys = array('_product_technical_spec', '_custom_attribute_color');

    foreach($meta_keys as $key){
        $value = get_post_meta($original_id, $key, true);
        if($value){
            // Здесь можно добавить вызов автоперевода, например, через API DeepL или Google Translate
            // Для примера просто копируем
            update_post_meta($post_id, $key, $value);
        }
    }
}

3. Интеграция автоперевода через API (пример с Google Translate)

Для автоматического перевода нужно отправлять метаданные на сервис переводов. Пример простого запроса к Google Translate API (учитывайте, что для рабочего решения нужен ключ API и обработка ошибок):

function translate_text_google($text, $target_lang = 'ru') {
    $api_key = 'ВАШ_КЛЮЧ_API';
    $url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;

    $response = wp_remote_post($url, array(
        'body' => json_encode(array(
            'q' => $text,
            'target' => $target_lang
        )),
        'headers' => array('Content-Type' => 'application/json')
    ));

    if(is_wp_error($response)) return $text;

    $body = json_decode(wp_remote_retrieve_body($response), true);

    return $body['data']['translations'][0]['translatedText'] ?? $text;
}

Вызовите эту функцию внутри цикла синхронизации метаданных, чтобы получать переведённый текст.

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

1. Создайте товар на основном языке (например, английском) и заполните метаданные.

2. Добавьте перевод товара на целевой язык через Polylang.

3. Сохраните перевод и проверьте, что метаданные переведены или скопированы в админке и фронтенде.

4. Для проверки автоперевода — убедитесь, что значения метаданных изменены на целевой язык, а не просто продублированы.

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

  • Отсутствие оригинального ID при вызове pll_get_post — проверьте, что язык и ID передаются корректно.
  • Метаданные не отображаются в теме — убедитесь, что тема выводит нужные метаполя и корректно работает с переводами.
  • Запросы к API перевода не проходят — проверьте ключ API, лимиты и формат запроса.
  • Переводится не весь текст метаданных — если мета содержат сложные структуры (массивы, JSON), нужно сериализовать/десериализовать перед отправкой на перевод.

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

  • Кэшируйте результаты перевода в метаданных, чтобы не делать повторные запросы к API.
  • Обрабатывайте возможные ошибки и тайм-ауты при запросах к сервисам перевода.
  • Используйте очередь задач (WP-Cron или внешние сервисы), чтобы не замедлять сохранение товара.
  • Фильтруйте и экранируйте все данные, чтобы избежать XSS и SQL-инъекций.

Сравнение подходов для автоперевода метаданных WooCommerce

МетодПреимуществаНедостаткиПример
Ручная копия метаданныхПросто реализовать, без затрат на APIНет перевода, копируются только оригинальные значенияКод с update_post_meta
Интеграция с Google Translate APIАвтоматический перевод, улучшает UXЗависимость от API, возможные задержки и расходыЗапросы через wp_remote_post
Использование сторонних плагинов автопереводаГотовые решения, поддержка и обновленияМеньше контроля, дополнительные расходыПлагины типа TranslatePress
Как оптимизировать перевод тем и плагинов WordPress для быстродействия
09.01.2026
Как добавить поддержку мультиязычности в собственном плагине WordPress
23.12.2025
Как использовать AJAX для автоперевода контента WordPress
28.06.2026
Как создать автоперевод шорткодов в WordPress
07.04.2026
Как правильно перевести статусы заказов WooCommerce без потери качества
16.06.2026