Что такое метаданные в WordPress и зачем их переводить
Метаданные (custom fields) — это дополнительная информация, связанная с записями, страницами и другими типами контента в WordPress. Например, это могут быть характеристики товаров, описания, SEO-теги или любые другие данные, не входящие в основной текст. При создании многоязычного сайта важно перевести не только заголовки и содержимое, но и метаданные, чтобы обеспечить полный локализованный опыт для пользователей.
Перевод метаданных часто упускают из виду, так как стандартные мультиязычные плагины не всегда автоматически их обрабатывают. В результате часть контента остаётся на исходном языке, что снижает качество сайта и может негативно повлиять на SEO.
В этой статье разберём, как автоматически переводить метаданные с помощью кода и сторонних сервисов, а также какие готовые решения можно использовать для упрощения задачи.
Основные сложности при переводе метаданных
Метаданные хранятся в таблице wp_postmeta и могут иметь разную структуру и формат. Они не всегда являются простыми текстовыми строками — иногда это JSON, сериализованные массивы или числовые значения, которые не требуют перевода.
Кроме того, метаданные могут использоваться разными плагинами и темами, что усложняет универсальный подход к переводу. Нужно чётко понимать, какие именно поля нужно переводить, чтобы не нарушить работоспособность сайта.
Например, поле _yoast_wpseo_title отвечает за заголовок SEO, а product_description — описание товара. Переводить нужно только текстовые поля, а числовые или системные — исключать.
Ручной перевод метаданных через WPML и Polylang
Плагины WPML и Polylang поддерживают перевод custom fields, но требуют их явного указания в настройках:
- В WPML нужно в разделе Настройки мультиязычности включить перевод для нужных полей.
- В Polylang для Pro версии есть возможность синхронизировать или переводить метаданные.
Однако такой подход требует ручного перевода и не подходит для сайтов с большим объёмом данных.
Автоматический перевод метаданных с помощью Google Translate API и кода
Для автоматизации перевода можно использовать Google Cloud Translation API или другие сервисы. Ниже пример функции для автоматического перевода метаданных при сохранении записи.
function wptranslate_translate_postmeta($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (wp_is_post_revision($post_id)) return;
$meta_keys_to_translate = ['product_description', 'custom_text_field'];
foreach ($meta_keys_to_translate as $meta_key) {
$value = get_post_meta($post_id, $meta_key, true);
if (!empty($value)) {
$translated = wptranslate_google_translate($value, 'ru', 'en'); // перевод с русского на английский
update_post_meta($post_id, $meta_key . '_en', $translated);
}
}
}
add_action('save_post', 'wptranslate_translate_postmeta');
function wptranslate_google_translate($text, $source, $target) {
// Здесь должна быть интеграция с Google Cloud Translation API
// Для примера возвращаем текст с пометкой
return '[Перевод] ' . $text;
}В этом примере при сохранении записи происходит перевод указанных метаполей и сохранение результата в новые поля с суффиксом языка. Для реального использования нужно реализовать вызов API Google Translate с передачей ключа и обработкой ответа.
Использование плагина Clearfy Pro для автоматизации перевода метаданных
Плагин Clearfy Pro предлагает расширенные возможности оптимизации и управления переводом, включая автоматический перевод метаданных. Он интегрируется с популярными переводческими сервисами и позволяет гибко настраивать, какие поля переводить.
Использование Clearfy Pro избавит от необходимости писать собственный код и обеспечит стабильную работу на больших сайтах.
Как безопасно добавлять автоперевод метаданных в свои плагины и темы
Если вы разрабатываете собственные темы или плагины и хотите добавить поддержку автоматического перевода метаданных, используйте хуки WordPress, чтобы не ломать логику сохранения данных.
Важно:
- Добавляйте перевод в отдельные поля, чтобы не потерять оригинал.
- Используйте проверки на автосохранение и ревизии.
- Реализуйте возможность отключения автоперевода для избранных полей.
Пример функции в плагине:
function wptranslate_plugin_translate_meta($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
$fields = ['my_custom_field'];
foreach ($fields as $field) {
$val = get_post_meta($post_id, $field, true);
if ($val) {
$translated = wptranslate_google_translate($val, 'ru', 'en');
update_post_meta($post_id, $field . '_en', $translated);
}
}
}
add_action('save_post', 'wptranslate_plugin_translate_meta');Советы по оптимизации перевода и производительности
Перевод метаданных может влиять на скорость работы сайта, особенно если их много. Чтобы избежать проблем:
- Кешируйте результаты перевода, чтобы не обращаться к API повторно.
- Используйте асинхронные задачи (wp_cron или очереди) для перевода больших объёмов.
- Минимизируйте количество полей к переводу, выбирая только необходимые.
- Ограничивайте длину текстов для перевода.
Эти меры помогут избежать задержек при сохранении записей и снизят нагрузку на сервер.
Заключение
Автоматический перевод метаданных — важный шаг для создания полноценных многоязычных сайтов на WordPress. Использование API переводчиков в связке с собственным кодом или плагинами, такими как Clearfy Pro, позволяет решить эту задачу эффективно и с минимальными усилиями. Следуйте рекомендациям по безопасности и производительности, чтобы обеспечить стабильную работу сайта при масштабировании.