Отображение переведенных имен полей ACF в WordPress

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

<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>

person Premine    schedule 25.02.2020    source источник


Ответы (1)


Добро пожаловать в Stack Overflow.

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

Вариант 1:

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

<?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'); 
} 

?>

Вариант 2:

Вы можете создать функцию в functions.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 языках. английский, французский и китайский. Таким образом, приведенный выше код основан на этом порядке.

person Rajeev    schedule 05.03.2020
comment
Большое спасибо, я попробую. С наилучшими пожеланиями. - person Premine; 08.03.2020
comment
Примите и проголосуйте за ответ, если это работает для вас. - person Rajeev; 09.03.2020