Как передавать текст в автопереводчик в WordPress через хуки

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

Что такое хуки и почему они важны для автоперевода

Хуки — это механизмы WordPress, которые позволяют изменять стандартное поведение без правки ядра. Есть два основных типа хуков: actions (действия) и filters (фильтры). Для автоперевода чаще всего применяются фильтры, так как они позволяют изменить содержимое текста перед его выводом или сохранением.

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

Основные хуки для перехвата текста в WordPress

Рассмотрим ключевые хуки, в которые можно "вклиниться" для реализации автоперевода.

  • the_content — фильтр, применяемый ко всему основному содержимому записи или страницы.
  • the_title — фильтр для заголовков записей.
  • get_post_metadata — фильтр для метаданных записи, полезен для перевода произвольных полей.
  • gettext и gettext_with_context — фильтры для перевода строк интерфейса, таких как кнопки и сообщения.

Сочетая эти фильтры, вы можете покрыть практически все текстовые данные на сайте.

Пример передачи текста в автопереводчик через фильтр the_content

Давайте создадим функцию, которая перехватывает содержимое записи, отправляет его в автопереводчик (эмуляция вызова API) и выводит переведённый текст.

function wptranslate_autotranslate_content($content) {
    // Проверяем, нужно ли переводить контент (например, текущий язык не оригинал)
    if (!function_exists('wptranslate_get_current_language')) {
        return $content; // Функция определения языка не найдена — возвращаем оригинал
    }

    $current_lang = wptranslate_get_current_language();
    if ($current_lang === 'ru') { // Предположим, оригинал на русском
        return $content; // Не переводим
    }

    // Здесь вы бы вызвали реальный API автопереводчика, например Google Translate
    $translated_text = wptranslate_fake_translate_api($content, $current_lang);

    return $translated_text;
}
add_filter('the_content', 'wptranslate_autotranslate_content');

// Заглушка функции определения языка
function wptranslate_get_current_language() {
    // Вернём, например, язык из сессии или куки
    return isset($_GET['lang']) ? sanitize_text_field($_GET['lang']) : 'ru';
}

// Заглушка автопереводчика
function wptranslate_fake_translate_api($text, $lang) {
    // Очень простой "перевод" — добавим пометку
    return "[Перевод на $lang]: " . $text;
}

Этот пример демонстрирует базовый подход: текст передается в функцию автоперевода, а затем выводится переведённым. В реальном проекте нужно заменить wptranslate_fake_translate_api на вызов настоящего API.

Обработка заголовков и метаданных через хуки

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

function wptranslate_autotranslate_title($title) {
    if (wptranslate_get_current_language() === 'ru') {
        return $title;
    }
    return wptranslate_fake_translate_api($title, wptranslate_get_current_language());
}
add_filter('the_title', 'wptranslate_autotranslate_title');

Для метаданных используем фильтр get_post_metadata:

function wptranslate_autotranslate_metadata($metadata, $object_id, $meta_key, $single) {
    if (wptranslate_get_current_language() === 'ru') {
        return $metadata;
    }
    if (is_string($metadata)) {
        return wptranslate_fake_translate_api($metadata, wptranslate_get_current_language());
    }
    return $metadata;
}
add_filter('get_post_metadata', 'wptranslate_autotranslate_metadata', 10, 4);

Эти фильтры позволят автоматически переводить не только содержимое записей, но и пользовательские поля.

Оптимизация и кеширование переводов

Автоперевод через API — затратная операция по времени и ресурсам. Чтобы избежать постоянных запросов и задержек, рекомендуем кешировать результаты перевода. Для этого можно использовать встроенный объектный кеш WordPress или внешние хранилища (Redis, Memcached).

Пример кеширования перевода в опциях:

function wptranslate_cache_translate($text, $lang) {
    $cache_key = 'wptranslate_translated_' . md5($text . $lang);
    $cached = get_option($cache_key);
    if ($cached !== false) {
        return $cached;
    }
    $translated = wptranslate_fake_translate_api($text, $lang);
    update_option($cache_key, $translated);
    return $translated;
}

Вызов этой функции вместо прямого API позволит значительно снизить нагрузку.

Использование готовых плагинов с поддержкой хуков для автоперевода

Если вы не хотите писать все с нуля, обратите внимание на плагины, которые поддерживают интеграцию с хуками и API автопереводов:

  • Clearfy Pro — плагин для оптимизации и расширения функционала, в том числе с возможностями для мультиязычности.
  • WPGPT — плагин с интеграцией GPT-4, который можно настроить для автоперевода через хуки.

Они предоставляют API и хуки, которые можно использовать для тонкой настройки автоперевода под ваши задачи.

Рекомендации по работе с автопереводом через хуки

  • Всегда проверяйте текущий язык и избегайте перевода, если язык совпадает с оригиналом — это сэкономит ресурсы.
  • Обрабатывайте только те области, где это необходимо, чтобы не влиять на производительность.
  • Используйте кеширование переводов для уменьшения количества запросов к API.
  • Тестируйте работу на разных типах контента: записи, заголовки, метаданные, чтобы избежать ошибок в отображении.
  • При необходимости добавьте логирование для отладки процесса перевода.

Использование хуков — лучший способ интеграции автоперевода в WordPress, позволяющий гибко настраивать процесс и обеспечивать качественный результат.

Как автоматически перевести метаданные в WordPress
02.03.2026
Как передавать текст в автопереводчик в WordPress через хуки
26.02.2026
Как создать автоперевод шорткодов в WordPress
07.04.2026
Как перевести на WordPress пользовательские типы записей и таксономии
03.12.2025
Автоматический перевод описаний товаров WooCommerce в WordPress: практическое руководство
23.04.2026