WPML: получение переменных с другой страницы с учетом мультиязычности

Последнее обновление: 4 октября, 2020

wordpress, wpml

Пример случая, когда это может понадобиться: На странице контактов адрес заведения выведен через произвольные поля, и его нужно дублировать на всех страницах сайта в футере. Целесообразно сделать так, чтобы при изменении на странице контактов адрес автоматически подправился на всех страницах, причем учитывало текущий язык страницы.

Есть 2 простых варианта реализации этой задачи.

1. Если такое поле у нас одно: Просто узнаем текущий язык и меняем обращение к странице.

<?php
    global $sitepress;
    $current_lang = $sitepress->get_current_language();
    if ( $current_lang == 'uk' ) {
        the_field('fieldname', 1);
    } else if ( $current_lang == 'en' ) {
        the_field('fieldname', 2);
    }
?>

Где fieldname — название поля, а 1, 2 — номер публикации, с которой берем поле в соответствии с языком.

2. Если таких полей у нас много, то прописывать для каждого поля условие не уместно, потому в переменной будем хранить id публикации, к которой будем обращаться.

<?php
    global $sitepress;
    $current_lang = $sitepress->get_current_language();

    switch ($current_lang) {
        case 'uk': $contact_page_id = 1; break;
        case 'en': $contact_page_id = 2; break;
    }

// и в месте запроса содержимого поля соответственно получим
the_field('fieldname', $contact_page_id);
?>