#wordpress #polylang #wp-nav-walker #language-switching
#wordpress #polylang #wp-nav-walker #переключение языка
Вопрос:
Как создать пользовательский языковой переключатель polylang, подобный этому https://prnt.sc/vnj7b3 ? Используемая разметка Html: Родительский :
<a href="#" class="menu__link language">EN
<span><svg width="8px" viewBox="0 0 451.847 451.847">
<g>
<path d="M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751
c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0
c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z" />
</g>
</svg></span>
</a>
Дочерние элементы, которые отображаются в выпадающем списке при наведении курсора мыши:
<div class="drop-block lang">
<a href="https://google.com" class="drop-block__link">RU</a>
<a href="https://google.com" class="drop-block__link">EN</a>
<a href="https://google.com" class="drop-block__link">UA</a>
</div>
Пробовал эту функцию, но у меня нет контроля над разметкой :
<?php pll_the_languages( array( 'dropdown' => 1, 'hide_current=> 1 ) ); ?>
Ответ №1:
вы можете получить необработанные данные следующим образом:
<?php
// add "raw" key and save data to variable
$langs_array = pll_the_languages( array( 'dropdown' => 1, 'hide_current' => 1, 'raw' => 1 ) );
?>
<?php if ($langs_array) : ?>
<div class="drop-block lang">
<?php foreach ($langs_array as $lang) : ?>
<a href="<?php echo $lang['url']; ?>" class="drop-block__link">
<?php echo $lang['slug']; ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
больше информации здесь: https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference /
Комментарии:
1. Я все делаю правильно?
<div class="drop-block lang"> <?php $translations = pll_the_languages(array('raw' => 1)); ?> <a href="<?php echo $translations[uk]['url']; ?>" class="drop-block__link">UA</a> <a href="<?php echo $translations[ru]['url']; ?>" class="drop-block__link">RU</a> <a href="<?php echo $translations[en]['url']; ?>" class="drop-block__link">EN</a> </div>
2. Я думаю, мой метод более примитивен ))
3. ваш способ тоже должен работать, хотя вам не хватает некоторых кавычек
$translations[ru]['url']
->$translations['ru']['url']
то же самое дляuk