Плагин WPML — один из самых популярных инструментов для создания многоязычных сайтов на WordPress. Он позволяет переводить страницы, записи, таксономии и стандартные поля. Но часто в проектах встречается необходимость перевода дополнительных полей (custom fields), которые используются для хранения уникального контента, например, SEO данных, дополнительных описаний, метаинформации и прочего.
Почему стандартные настройки WPML не переводят все дополнительные поля
По умолчанию WPML автоматически не обрабатывает все пользовательские поля. Это связано с тем, что некоторые поля могут содержать технические данные, которые не требуют перевода, а некоторые — наоборот, требуют. Для корректного перевода необходимо вручную указать, какие именно поля должны переводиться.
Если этого не сделать, на разных языках ваш сайт будет показывать одинаковые данные из этих полей, что не всегда приемлемо для качественного локализации.
Пример: у вас есть поле _custom_seo_description, которое выводится в мета-тегах. Если его не перевести, описание останется на основном языке для всех локалей.
Как добавить дополнительные поля в WPML для перевода через интерфейс
Самый простой способ — использовать встроенный функционал WPML:
- Перейдите в админке WordPress в меню WPML > Настройки.
- Найдите секцию Перевод пользовательских полей (Custom Fields Translation).
- В списке полей найдите нужные поля и выберите для них опцию Переводить или Переводить (с копированием по умолчанию).
- Если поле отсутствует в списке, добавьте его вручную, введя точное название поля.
После этого WPML будет учитывать эти поля при создании или редактировании перевода записи.
Пример: добавить поле _custom_seo_description для перевода
Добавьте в список пользовательских полей в настройках WPML именно _custom_seo_description и выберите режим перевода.
Автоматизация добавления полей с помощью кода (для разработчиков)
Иногда удобнее добавить поля для перевода программно, особенно если полей много или они динамические. Для этого можно использовать фильтр wpml_config_custom_fields.
add_filter('wpml_config_custom_fields', 'wplite_add_custom_fields_to_wpml');
function wplite_add_custom_fields_to_wpml($custom_fields) {
$custom_fields[] = '_custom_seo_description';
$custom_fields[] = '_myplugin_special_note';
return $custom_fields;
}Этот код добавит два поля в список переводимых пользовательских полей WPML автоматически при загрузке.
Особенности перевода сложных полей и массивов
Некоторые пользовательские поля хранят сложные данные — массивы, сериализованные строки или JSON. WPML корректно переводит простые строки, а с такими структурами могут возникнуть сложности.
В таких случаях рекомендуем:
- Разбивать сложные данные на отдельные простые поля, если возможно.
- Использовать специальные хуки WPML для кастомной обработки сериализованных данных.
- Проверить, что плагин, создающий эти поля, поддерживает многоязычность или предоставляет API для перевода.
Пример перевода повторяющихся полей (Repeater Fields) ACF с WPML
Если вы используете Advanced Custom Fields (ACF) с повторяющимися группами, нужно убедиться, что они корректно синхронизируются с WPML.
В настройках WPML выберите синхронизацию полей ACF, а в ACF укажите правильные настройки для локализации групп полей.
Для автоматизации можно применить следующий код:
add_filter('wpml_acf_get_fields', function($fields) {
// Добавляем наши кастомные поля для перевода
$fields[] = 'my_repeater_field';
return $fields;
});Это позволит WPML корректно обрабатывать содержимое повторяющихся полей.
Плагины для упрощения работы с WPML и дополнительными полями
Кроме стандартных возможностей WPML, существуют плагины, которые помогают в работе с переводами дополнительных полей:
- WPML String Translation — позволяет переводить строки, которые не являются полями, но выводятся в шаблоне.
- Advanced Custom Fields Multilingual — расширение для ACF для поддержки многоязычности.
- Clearfy Pro — оптимизирует работу WordPress и совместим с WPML, помогает управлять мета-данными.
Рекомендуется внимательно изучить совместимость выбранных плагинов и протестировать их работу на тестовом сайте.
Советы по отладке и проверке перевода дополнительных полей в WPML
Если перевод не отображается, проверьте:
- Правильно ли добавлено поле в список переводимых в настройках WPML.
- Переведены ли сами поля при редактировании записи в нужном языке.
- Нет ли кеширования, которое мешает обновлению данных.
- Используются ли правильные функции вывода в шаблонах, поддерживающие многоязычность.
Например, для вывода поля используйте функцию с учетом языка:
echo apply_filters('wpml_translate_single_string', get_post_meta($post_id, '_custom_seo_description', true), 'Custom Fields', '_custom_seo_description');Это гарантирует, что будет показан перевод, а не оригинальное значение.
Заключение
Правильная настройка перевода дополнительных полей в WPML — залог качественной локализации сайта. Используя как интерфейсные возможности, так и программные методы, можно гибко управлять переводом любых пользовательских данных. Плагины и примеры кода из статьи помогут вам быстро реализовать нужный функционал и избежать типичных ошибок.
Для удобства работы с WPML и дополнительными возможностями рекомендуем обратить внимание на продукты Clearfy Pro и WPGPT, которые помогут оптимизировать и автоматизировать процессы.