Автоматический перевод контента на сайте WordPress — востребованная возможность для владельцев мультиязычных проектов. Обычно для этого используют плагины, но иногда важно обойтись без них, чтобы минимизировать нагрузку и сохранить контроль над процессом. В этой статье расскажем, как реализовать автоперевод постов и страниц WordPress с помощью внешнего API Google Translate, используя собственные функции и хуки.
Подготовка к автопереводу: регистрация и получение API ключа Google Translate
Для начала нам понадобится ключ доступа к Google Cloud Translation API. Чтобы его получить, выполните следующие шаги:
- Зарегистрируйтесь или войдите в Google Cloud Console.
- Создайте новый проект или выберите существующий.
- Перейдите в раздел APIs & Services > Library и найдите "Cloud Translation API".
- Активируйте API для вашего проекта.
- Перейдите в Credentials и создайте новый API ключ.
- Скопируйте полученный ключ и сохраните в безопасном месте.
Этот ключ мы будем использовать в нашем коде для отправки запросов на перевод.
Создание функции автоперевода контента в WordPress
Далее реализуем функцию, которая будет отправлять текст на перевод и возвращать результат. Для примера используем REST API Google Translate с поддержкой перевода на разные языки.
function wptranslate_ru_translate_text($text, $target_language = 'en') {
$api_key = 'ВАШ_API_КЛЮЧ'; // замените на ваш ключ
$url = 'https://translation.googleapis.com/language/translate/v2?key=' . $api_key;
$data = array(
'q' => $text,
'target' => $target_language
);
$response = wp_remote_post($url, array(
'body' => json_encode($data),
'headers' => array(
'Content-Type' => 'application/json'
)
));
if (is_wp_error($response)) {
return false;
}
$body = json_decode(wp_remote_retrieve_body($response), true);
if (isset($body['data']['translations'][0]['translatedText'])) {
return $body['data']['translations'][0]['translatedText'];
}
return false;
}
Эта функция принимает исходный текст и целевой язык (например, 'en', 'de', 'fr') и возвращает переведённый текст или false в случае ошибки.
Автоматический перевод при сохранении поста
Чтобы автоматически переводить контент при сохранении записи, подключаемся к хуку save_post:
function wptranslate_ru_auto_translate_post($post_id) {
// Проверяем тип записи, чтобы не применять ко всем
if (get_post_type($post_id) !== 'post') {
return;
}
// Получаем оригинальный контент
$post = get_post($post_id);
$original_content = $post->post_content;
// Переводим на английский
$translated_content = wptranslate_ru_translate_text($original_content, 'en');
if (!$translated_content) {
return;
}
// Обновляем кастомное поле с переводом
update_post_meta($post_id, '_translated_content_en', wp_kses_post($translated_content));
}
add_action('save_post', 'wptranslate_ru_auto_translate_post');
В этом примере перевод сохраняется в метаполе _translated_content_en. Вы можете расширить логику, добавив поддержку других языков и вывод перевода в шаблоне.
Вывод переведённого контента в шаблоне WordPress
Для отображения перевода вместо оригинала можно использовать фильтр the_content. Вот пример функции, которая проверяет наличие перевода и выводит его:
function wptranslate_ru_display_translated_content($content) {
if (is_singular('post')) {
$post_id = get_the_ID();
$translated = get_post_meta($post_id, '_translated_content_en', true);
if (!empty($translated)) {
return $translated;
}
}
return $content;
}
add_filter('the_content', 'wptranslate_ru_display_translated_content');
Таким образом, если перевод есть, посетитель увидит его вместо оригинала.
Производительность и ограничения автоперевода без плагинов
Важно понимать, что вызовы к внешнему API Google Translate могут замедлять сохранение постов, если перевод выполняется синхронно. Чтобы избежать этого, можно внедрить очередь переводов через wp_cron или отдельный процесс.
Также у Google Translate есть ограничения на бесплатное использование. Для больших сайтов с частыми обновлениями стоит учитывать стоимость и лимиты API.
Если вам нужны дополнительные возможности — например, перевод таксономий, полей или пользовательских типов записей — код легко расширяется, добавляя обработку нужных данных и сохранение перевода.
Альтернативы и плагины для автоперевода в WordPress
Если хотите быстро внедрить автоперевод без самостоятельной разработки, обратите внимание на плагины:
- WP Remark — поддерживает машинный перевод с возможностью редактирования.
- Clearfy Pro — оптимизирует работу сайта и может помочь с переводами.
Однако эти решения менее гибки, чем собственный код, и могут иметь свои ограничения.
Выводы и рекомендации
Собственная реализация автоперевода в WordPress без плагинов — отличный способ сохранить контроль и оптимизировать работу сайта под ваши задачи. Используя Google Translate API и хуки WordPress, можно реализовать качественный и автоматизированный перевод контента.
Проверяйте качество перевода, учитывайте производительность и лимиты API, а также не забывайте о безопасности при работе с внешними сервисами.
Этот подход подходит для опытных разработчиков, желающих интегрировать перевод непосредственно в логику сайта, избегая лишних зависимостей.