Поддержка Темы и шаблоны Ostrya — Polylang перевод

  • Есть такая ссылка. В шаблоне ostrya, там в данный момент отображается кнопка с надписью «Срочный ремонт». Как перевести эту кнопку? Пробовал pll_get_post_language — не отображается в переводе плагина эта строчка.
    Код:

    									echo '<a class="header-button" href="'. get_permalink( intval( ostrya_opt('header_button_link') ) ) .'">'. esc_attr( ostrya_opt('header_button_value') ) .'</a>';
    

    Что ещё можно сделать?

    • Тема изменена 4 недели назад пользователем Acme1994.

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Юрий

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

    Где допускаю ошибку?

    • Ответ изменён 3 недели, 3 дня назад пользователем Acme1994.
    • Ответ изменён 3 недели, 3 дня назад пользователем 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-фразы там, где нужен перевод.

Просмотр 10 ответов — с 1 по 10 (всего 10)