Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@taninbkk
Last active November 1, 2023 07:55
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save taninbkk/f95281b44b3762435777 to your computer and use it in GitHub Desktop.
Save taninbkk/f95281b44b3762435777 to your computer and use it in GitHub Desktop.
Polylang Shortcode
// Polylang Shortcode - https://wordpress.org/plugins/polylang/
// Add this code in your functions.php
// Put shortcode [polylang] to post/page for display flags
function polylang_shortcode() {
ob_start();
pll_the_languages(array('show_flags'=>1,'show_names'=>0));
$flags = ob_get_clean();
return $flags;
}
add_shortcode( 'polylang', 'polylang_shortcode' );
@kiditran
Copy link

@andrewvink : thank you so much for this sharing. I just add your code to my theme, it actually works fine.

@mstudioIL
Copy link

How do I show only languages names?

@Ruggierini
Copy link

I adjusted the shortcode a bit to have more control over the styling

// Add this to your functions.php file

function polylang_flags_shortcode() {
    ob_start();
    pll_the_languages(array('show_flags'=>1,'show_names'=>0));
    $flags = ob_get_clean();
    return '<ul class="polylang-flags">' . $flags . '</ul>';
}
add_shortcode('POLYLANG', 'polylang_flags_shortcode');

Then add this CSS to your theme, either via the customize panel "Custom CSS" or a wp_enqueue_style

/* Polylang Flags Inline */

.polylang-flags {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.polylang-flags li {
    display: inline;  
}

Use the Shortcode somewhere on your site

[POLYLANG]

Hello,

hope its not to late haha, I managed to do it and show the language instead of flags, and it shows and arrow besides the names of the languages but i cant find a way to change the color of that arrow.

Anyone has an idea of how to change it? if someone if still on this haha.
Thanks in advance

@xalunda
Copy link

xalunda commented Feb 13, 2020

Thanks!

For those who wants to tweak the generated labels, take a look a the official documentation to see the available options.

@AIMAR-S
Copy link

AIMAR-S commented May 22, 2020

Hi,
I was searching for a short code to get flags, but in wordpress administration the Language Switcher is not available, so i used this :

$pll_languges = pll_languages_list(['fields' => null]);

With this you will have an array of all Polylang PLL_Language objects , so you can get flag using ->flag on each array item.

And if you want only an array of flags and nothing else you can use :

$flags = pll_languages_list(['fields' => 'flag']);

Have fun :D

@anngro
Copy link

anngro commented Mar 7, 2022

Hiding the current language flag is possible with 'hide_current' =>1 in the above array:
pll_the_languages(array('show_flags'=>1,'show_names'=>0,'hide_current'=>1'));

All possible elements of the language switcher array can be found in plugins/polylang/include/switcher.php right at the beginning of the file (Polylang v3.1.4).

@maitseasi
Copy link

maitseasi commented Sep 6, 2022

Thanks a bunch for this!
Any guess on how to style the dropdown arrow for this? Im trying to replace it with a custom svg, but I couldnt get it with the one i targeted the rest of the menu drop-downs.

.et-menu .menu-item-has-children>a:first-child:after{ content: url(/dropdownarrow.svg); }

I couldnt get the target with inspect and was unable to find it in the plugin files (although im sure it is in there somewhere).

@sarathsivadasan
Copy link

How to set user wise [POLYLANG] in wordpress?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment