Как использовать REST API для автоперевода контента WordPress

Диагностика задачи: зачем нужен автоперевод через REST API в WordPress

В условиях многоязычных сайтов, автоматический перевод контента становится важным элементом оптимизации рабочих процессов. REST API WordPress позволяет интегрировать внешние сервисы перевода для динамического и точного перевода страниц, записей и произвольных типов записей без ручного копирования текстов.

Основные симптомы необходимости внедрения REST API автоперевода:

  • Ручной перевод контента занимает слишком много времени;
  • Необходима интеграция с внешними сервисами, например DeepL или Google Translate API;
  • Требуется перевод динамического контента (например, пользовательских форм, AJAX-запросов);
  • Хотите автоматизировать перевод при публикации новых записей.

Пошаговое решение: настройка автоперевода через REST API WordPress

1. Регистрация кастомного REST API эндпоинта для автоперевода

Создадим собственный endpoint, который будет принимать ID записи, язык перевода и возвращать переведенный текст.

add_action('rest_api_init', function () {
    register_rest_route('autotranslate/v1', '/post/(?P<id>\d+)', [
        'methods' => 'POST',
        'callback' => 'auto_translate_post',
        'permission_callback' => function () {
            return current_user_can('edit_posts');
        }
    ]);
});

function auto_translate_post($request) {
    $post_id = $request['id'];
    $target_lang = $request->get_param('lang');

    $post = get_post($post_id);
    if (!$post) {
        return new WP_Error('no_post', 'Запись не найдена', ['status' => 404]);
    }

    $content = $post->post_content;

    // Вызов функции для перевода текста (пример с Google Translate API)
    $translated_text = translate_text_google_api($content, $target_lang);

    return ['translated_content' => $translated_text];
}

2. Пример функции вызова Google Translate API

Реализуем простой вызов Google Translate через CURL. Для реального проекта лучше использовать официальную библиотеку Google.

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

    $post_fields = [
        'q' => $text,
        'target' => $target_lang,
        'format' => 'text'
    ];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_fields));

    $response = curl_exec($ch);
    curl_close($ch);

    $data = json_decode($response, true);

    if (isset($data['data']['translations'][0]['translatedText'])) {
        return $data['data']['translations'][0]['translatedText'];
    }

    return false;
}

3. Вызов автоперевода из фронтенда с помощью AJAX

Отправим AJAX-запрос на созданный endpoint для перевода содержимого поста.

jQuery(document).ready(function($) {
    $('#translate-button').on('click', function() {
        var postId = $(this).data('postid');
        var targetLang = $('#language-select').val();

        $.ajax({
            url: '/wp-json/autotranslate/v1/post/' + postId,
            method: 'POST',
            data: { lang: targetLang },
            success: function(response) {
                $('#translated-content').text(response.translated_content);
            },
            error: function(xhr) {
                alert('Ошибка перевода: ' + xhr.responseJSON.message);
            }
        });
    });
});

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

  • Убедитесь, что REST API endpoint доступен по адресу /wp-json/autotranslate/v1/post/{post_id} и возвращает переведенный текст.
  • Проверьте в консоли браузера успешный ответ AJAX-запроса с переведенным содержимым.
  • Создайте тестовую запись с текстом на исходном языке и запросите перевод в другой язык, например с английского на русский.
  • При ошибках проверьте логи сервера и корректность API ключа внешнего сервиса перевода.

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

  • Ошибка 403 или 401 при вызове REST API: Проверьте permission_callback и права пользователя. Для публичного API используйте специальные ключи или nonce.
  • Пустой или некорректный результат перевода: Проверьте формат запроса к API перевода и корректность API ключа.
  • Задержки или таймауты: Ограничьте объем текста для перевода, разбивайте на части, используйте кэширование переведенного контента.
  • Проблемы с кодировкой: Убедитесь, что контент передается и принимается в UTF-8.

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

  • Используйте permission_callback для защиты REST API от неавторизованных вызовов.
  • Кэшируйте результаты перевода, чтобы не обращаться к API при каждом запросе.
  • Ограничьте максимальную длину текста для перевода, чтобы избежать превышения лимитов API.
  • Логируйте ошибки и время ответа API для мониторинга производительности.
  • Обрабатывайте исключения и ошибки API, чтобы не ломать работу сайта.

Сравнение вариантов реализации автоперевода через REST API

ВариантПлюсыМинусыРекомендуемые сценарии
Использование Google Translate API напрямуюПростота, быстрота интеграции, поддержка множества языковПлатный сервис, лимиты по количеству символов, необходимость обработки ошибокСайты с небольшим объемом контента и бюджетом на API
Использование DeepL APIКачественный перевод, поддержка профессиональных языковОграниченный список языков, выше стоимостьСайты с высокими требованиями к качеству перевода
Собственная реализация с open source движкамиБесплатно, полный контроль над процессомСложность настройки, ограниченное качество переводаЭкспериментальные проекты, внутренние сайты
Как автоматизировать перевод сообщений WordPress через хуки и плагины
13.12.2025
Как автоматизировать перевод динамического контента WordPress
14.04.2026
Как создать свой плагин для автоперевода WordPress
26.11.2025
Автоматический перевод сообщений о статусах заказов WooCommerce в WordPress
06.06.2026
Как сделать автоперевод контента WordPress на основе open source решений
23.01.2026