Задать вопрос
@Fierfoxik

Почему не срабатывает условие в wp + polylnag для отображение контента только для en?

Возникла проблема когда потребовалось отобразить в шаблоне слайдер для английской и китайской версии сайта, нашел статью где было с помощью условия задано условие.
Собственно сделал все то же самое но вот проблема в том что он не отображает для англ версии слайдер как собственно и для китайской.
<?php
    $currentlang = get_bloginfo('language');

    if($currentlang=="en") {
        echo do_shortcode('[metaslider id=123]'); // English
    }

    if($currentlang=="fr") {
        echo do_shortcode('[metaslider id=456]'); // French
    }
?>
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
get_bloginfo('language') возвращает совершенно не то, что вы ожидаете. Вместо 2-символьного кода (слага), данная функция возвращает локаль в формате 'en-US' (обратите внимание на дефис). Еще есть функция get_locale(), которая возвращает все ту же локаль, но уже в формате 'en_US' (обратите внимание на подчеркивание). А у Polylang есть свое АПИ для этого:
if ( 'en' == pll_current_language() ) {
    echo do_shortcode('[metaslider id=123]');
}

if ( 'XX' == pll_current_language() ) {
    // do smth
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
get_bloginfo отображает текущую версию языка сайта, а вам нужно автоопределение языка пользователя верно?

не проще?
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "en":
        echo do_shortcode('[metaslider id=123]'); // English
        break;
    case "fr":
        echo do_shortcode('[metaslider id=456]'); // French
        break;       
    default:
        //default
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы