Отображение переведенных имен полей ACF в WordPress - PullRequest
0 голосов
/ 25 февраля 2020

Я использую ACF PRO с WPML, имена полей переводятся прямо в бэкэнд, но когда я пытаюсь показать их (используя одно содержимое. php) на внешнем интерфейсе, я не могу получить переведенное поле значения имен. Есть ли в шаблоне способ заставить переводить имена полей, показать перевод language1, когда вы находитесь на language1, и показать перевод language2, когда вы находитесь на language2. Я нашел кое-что о жестко закодированном тексте. Я использую это, чтобы показать содержание (на испанском sh):

<div style="margin-top: 10px; font-size: 120%; color: black;"><?php if( get_field('telefono_de_contacto') ): ?><p><strong>Teléfono de contacto: </strong> <?php the_field ('telefono_de_contacto'); ?></p><?php endif; ?></div>
                    <div style="margin-top: 10px; font-size: 120%; color: black;"><?php if( get_field('email_de_contacto') ): ?><p><strong>Email de contacto: </strong><?php the_field ('email_de_contacto'); ?></p><?php endif; ?></div>
                    <div style="margin-top: 10px; font-size: 120%; color: black;"><?php if( get_field('oficio') ): ?><p><strong>Oficio: </strong><?php the_field ('oficio'); ?></p><?php endif; ?></div>
                    <div style="margin-top: 10px; font-size: 120%; color: black;"><?php if( get_field('municipio') ): ?><p><strong>Municipio: </strong> <?php the_field ('municipio'); ?></p><?php endif; ?></div>

1 Ответ

0 голосов
/ 05 марта 2020

Добро пожаловать в переполнение стека.

У меня была такая же проблема при работе с ACF Pro и WPML. Приведенный ниже код работал для меня.

Option1:

В приведенном ниже коде измените КОД ЯЗЫКА в условии IF в зависимости от вашего языка и используйте код поля_ для отображения указанного языкового поля c.

<?php 

if(ICL_LANGUAGE_CODE == "en")
{
the_field ('telefono_de_contacto'); 
} 
elseif(ICL_LANGUAGE_CODE == "es")
{ 
the_field ('telefono_es_contacto'); 
}
else
{
the_field ('telefono_fr_contacto'); 
} 

?>

Option2:

Вы можете создать функцию в функции. php как показано ниже.

function cl_acf_set_language() {
  return acf_get_setting('default_language');
}
function lg_opt($name) {
    add_filter('acf/settings/current_language', 'cl_acf_set_language', 100);
    $option = get_field($name, 'option');
    remove_filter('acf/settings/current_language', 'cl_acf_set_language', 100);
    return $option;
}

И затем вы можете использовать приведенный ниже код в файле шаблона для динамического вызова поля acf.

<?php language_code(lg_opt('email_address_en'),lg_opt('email_address_fr'),lg_opt('email_address_zh')); ?>

Мой сайт имеет 3 языка , Английский sh, французский и китайский. Таким образом, приведенный выше код основан на этом порядке.

...