Так же пробовал такой вариант:
"post_fields": {
"custom_field": {
"wpcf": {
"wpm_each": {
"short-description": {}
}
}
}
}
Поскольку в БД поле сохраняется как wpcf-short-description
И различные комбинации с добавлением/удалением "custom_field": {
и "wpm_each": {
Ни один из вариантов не сработал.
Проблема частично решена. Пропустил один важный момент в документации:
For set translation uses the syntax:
[:en]Donec vitae orci sed dolor[:de]Cras risus ipsum faucibus ut[:]
Теперь в посте в админке разный текст для разных языков. Но на странице текст так и выводится
[:es]Donec vitae orci sed dolor[:ru]Лучшее предложение ut[:]
На форуме вроде как есть решение для админки – wp_enqueue_script( 'wpm_translator' );
и далее вызывать функцию перевода. Но проблема в том, что это решение только для админки. А для сайта? При добавлении через wp_enqueue_scripts
этот скрипт не зарегистрирован. даже после загрузки всех плагинов он не доступен.
Одно из найденных решений заключается в следующем:
1. скопировать js скрипт для перевода себе в тему
2. подключить на страницу
3. локализовать скрипт нужными данными
4. вызвать на странице
wp_enqueue_script( 'wpm_translator', get_template_directory_uri() . '/assets/plugin/wpm/translator.js', array( 'jquery' ), null, true );
$languages = array_map( function( $lang ) {
return substr( $lang, 0, 2 );
}, get_available_languages() );
$translator_params = array(
'languages' => $languages,
'default_language' => 'ru',
'language' => substr( determine_locale(), 0, 2 ),
'show_untranslated_strings' => 'yes',
);
wp_localize_script( 'wpm_translator', 'wpm_translator_params', $translator_params );
вызывается следующим образом
function wpmTranslate($) {
$('[data-wpm-translate-me="1"]').each(function () {
var text = wpm_translator.translate_string($(this).text());
$(this).text(text);
});
}
Велосипед но рабочий.
Еще как вариант – воспользоваться функцией wpm_translate_string()
из плагина как оберткой над get_post_meta( get_the_ID(), 'wpcf-short-description', true )