Переключатель языка Polylang - показывать только языковые коды

Я создал меню внутри создаваемой темы и добавил переключатель языка, который поставляется с Polylang.

На передней панели переключатель отображается, как и должно быть, но он показывает полное название языка (например, английский, немецкий,...). Вместо полных имен я хотел бы, чтобы коды стран печатались.

Сейчас:

Требуемый результат:

2 ответа

Вы достигаете этого двумя способами:

  1. добавление '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);

Или

  1. Хук 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' );

?>
Другие вопросы по тегам