Модератор
Юрій
(@yube)
Можно использовать pll_register_string() для регистрации строки, что дает возможность сделать все языковые версии строки в админке, и pll_e() для вывода в нужном месте.
https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/
У меня получается такое значение. Поймёт ли Полилонг о каком тексте идёт речь? Не знаю где сам текст «отыскать»… И аналогично с кнопками, где указана переменная. Как их перевести? Если вместо текста указана переменная.
ostrya_opt('header_button_value')
Сейчас попробую pll_register_string — спасибо!
По всякому пытался обернуть эту часть кода:
echo '<a class="header-button" href="'. get_permalink( intval( ostrya_opt('header_button_link') ) ) .'">'. pll_register_string (esc_attr( ostrya_opt('header_button_value') )) .'</a>';
пропадает кнопка и весь контент сайта… Что не так делаю?
Модератор
Юрій
(@yube)
Все не так. Регистрировать строку надо в functions.php дочерней темы или каким-то другим аналогичным способом. В шаблоне это делать бесполезно. В шаблоне должен быть вывод pll_e этой строки. При таком варианте значение опции из настроек теряет всякий смысл, потому по любому языковые варианты прописываются в настройках полиланга.
И сверяйтесь с документацией — она для того и существует.
Я немного чайник в этом деле. Пока-что, всё ровно не получается.
Есть такой вывод в шаблоне:
<?php $copyright_column = ostrya_opt('footer_copyright_menu') ? 'col-md-6 col-sm-12 col-xs-12' : 'col-md-12 text-center'; ?>
<div class="<?php echo esc_attr( $copyright_column ); ?>">
<?php
$copyright_text = ostrya_opt('footer_copyright_text');
echo '<div>'. wp_kses_post( $copyright_text ) .'</div>';
?>
</div>
Текст «выходит» с этой переменной footer_copyright_text . footer_copyright_text — оборачивал в pll_e(). В function что нужно прописать? Можете подсказать? В документации, к сожалению, не нашёл ответа на этот вопрос. Может что-то не так понял. Спасибо!
Модератор
Юрій
(@yube)
В functions.php дочерней темы (или сниппеты, или спец.плагин):
add_action( 'init', function() {
pll_register_string('header button text', 'Срочный ремонт');
});
В шаблоне:
echo '<a class="header-button" href="'
. get_permalink( intval(ostrya_opt('header_button_link') ) )
. '">'
. pll__('Срочный ремонт')
.'</a>';
Пишу на коленке с головы, проверять просто негде.
Супер! Спасибо огромное!!!
Я правильно понимаю, в function.php я могу дальше продолжать эту строку?
То есть, к примеру, мне нужно футер перевести:
add_action( 'init', function() {
pll_register_string('header_button_text', 'Срочный ремонт');
pll_register_string('footer_copyright_text', 'Быстро, качественно, с гарантией!');
});
Всё верно? Или нужно по новому add_action прописывать?
И соответственно тут:
<div class="<?php echo esc_attr( $copyright_column ); ?>">
<?php
$copyright_text = ostrya_opt('footer_copyright_text');
echo '<div>'. pll__(wp_kses_post( $copyright_text )) .'</div>';
?>
</div>
Всё ли верно?
Потому-что в админке новая строка появилась, а вот сам контент на сайте не меняется почему-то: https://take.ms/LRtRC
Где допускаю ошибку?
-
Ответ изменён 2 года, 11 месяцев назад пользователем Acme1994.
-
Ответ изменён 2 года, 11 месяцев назад пользователем Acme1994.
Модератор
Юрій
(@yube)
Какую строку регистрируем, такую и просим вывести. У Вас же в регистрации «быстро …», а в параметре pll__ непонятно что.
Спасибо большое, Юрий! С этим разобрался.
Остался последний момент.
Есть вывод строк с телефоном и графиком: https://take.ms/vhpJw
Сам код:
<div class="header-left-info">
<ul class="list-inline">
<?php
$header_info = ostrya_opt('header_info');
for ($i = 1; $i <= 2; $i++) {
if ( !empty($header_info['label_'.$i]) && !empty($header_info['value_'.$i]) ) {
printf(
'<li><span class="header-label">%s</span><span class="header-hightlight">%s</span></li>',
wp_kses_post( $header_info['label_'.$i] ),
wp_kses_post( $header_info['value_'.$i] )
);
}
}
?>
</ul>
</div>
Как правильно заменить эти две строки:
wp_kses_post( $header_info['label_'.$i] ),
wp_kses_post( $header_info['value_'.$i] )
Все мои попытке закончились тем, что сайт «падал». Вместо wp_kses_post выводил echo и там строчку прописывал — не прокатил этот вариант. Как быть с такими переменными?
Модератор
Юрій
(@yube)
Я бы заменил скриптовую часть на сгенерированный html и уже в нем подставил pll-фразы там, где нужен перевод.