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

Как выполнить свою функцию в функции шорткода Wordpress, если они обе описываются в файле functions.php?

Есть простая функция, определения на какой версии сайта сейчас находится пользователь (англ. или рус.):
function eng() {
  $link = $_SERVER["REQUEST_URI"];
  $k = stristr($link, 'en/');
  $newlink ='/'.$k;
  if ($_SERVER["REQUEST_URI"]== $newlink ) {return true;} else {return false;}
}

Эта функция прописана в файле functions.php ибо используется в самом шаблоне.

В этом же файле (funtions.php) есть функция, отвечающая за вывод слайдера:
function slider($atts, $content = null) {
extract(shortcode_atts(array(
), $atts));
if (eng()) {$goals='Our goals:';} else {$goals='Наши цели:';}
return ' <section id="slider" class="hidden-xs">
      <div class="container slider-container">
        <div class="row">
        <div class="slider-title">'.$goals.'</div>
        <div id="customNav_ft"></div>
        </div>
      </div>
                  <!-- Owl.Carousel-->
            <div class="owl-carousel">'.do_shortcode("$content").'</div>
            <!-- Owl.Carousel-->
    </section>';
}
add_shortcode("slider", "slider");

Но моя функция eng() тут почему-то не работает, всегда выводится первый вариант. Как можно решить эту проблему?
  • Вопрос задан
  • 279 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Так, стоп. Мультиязычка у вас каким плагином реализована? У них у всех есть функция/константа для получения значения текущего языка, и не надо городить огород через $_SERVER["REQUEST_URI"]. Например, в WPML это константа ICL_LANGUAGE_CODE, в Polylang это функция pll_current_language().

Из саппорта вашего плагина:

You can use

WPGlobus::Config()->language

to get the current language
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rOOse
@rOOse
Frontend developer
Если дело всего лишь в переводе слов, то и вообще не стоит проверять язык и городить такие конструкции, в коде пишете <?php _e('Our goals:', 'theme_name'); ?>, устанавливаете loco-translate(или вручную создаете файлы перевода), там переводите слова и все.
Ответ написан
Ваш ответ на вопрос

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

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