Переключатель языка Polylang - показывать только языковые коды
Я создал меню внутри создаваемой темы и добавил переключатель языка, который поставляется с Polylang.
На передней панели переключатель отображается, как и должно быть, но он показывает полное название языка (например, английский, немецкий,...). Вместо полных имен я хотел бы, чтобы коды стран печатались.
Сейчас:
Требуемый результат:
2 ответа
Вы достигаете этого двумя способами:
добавление
'display_names_as'=>'slug'
к аргументам$args = array('show_flags' => 0, 'show_names' => 0, 'hide_current' => false,'dropdown' => 1,'display_names_as'=>'slug'); pll_the_languages($args);
Или
Хук Polylang Просто добавьте этот фрагмент в файл function.php:
add_filter( 'pll_the_languages_args', function( $args ) { $args['display_names_as'] = 'slug'; return $args; } );
Это мой код, добавьте код в свой файлfunctions.php
, а затем добавитьshortcode
в том месте, где вы хотите показать список языков, он показывает языки в виде флага страны, вы можете показать то, что хотите, просто удалите комментарий к
var_dump
.затем отредактируйте его, как вам нравится
<?php
/**
* Put shortcode [polylang_langswitcher] to post/page for display flags
*/
function custom_polylang_langswitcher() {
$langs_array = pll_the_languages( array( 'dropdown' => 1, 'hide_current' => 0, 'raw' => 1 ) );
//var_dump($langs_array);
if ($langs_array) : ?>
<div class="drop-block lang">
<?php foreach ($langs_array as $lang) : ?>
<a href="<?php echo $lang['url']; ?>" class="drop-block__link icon-<?php echo $lang['slug']; ?>">
<img width="32" height="32" src="<?php echo $lang['flag']; ?>" alt="<?php echo $lang['slug']; ?>" />
</a>
<?php endforeach; ?>
</div>
<?php endif;
}
add_shortcode( 'polylang_langswitcher', 'custom_polylang_langswitcher' );
?>