Tworząc strony internetowe dla moich klientów, bardzo często są to strony wielojęzyczne. Dawniej wykorzystywałem do tego Polylang plugin, ale z czasem zaczęło mi brakować w nim funkcjonalności. Zdecydowałem się na wykupienie i zainstalowanie WPML, który to świetnie obsługuje wielojęzyczność. W tym artykule nie będę rozwodził się na temat zalet i funkcjonalności, a skupię się na tytułowym ukryciu flagi aktywnego języka. Dlaczego ukrycie flagi aktywnego języka? Spotkałem się, że to klienci sugerowali ukrycie flagi, a argumentowali to tym, aby nie wprowadzać zamieszania z flagami. Teraz kiedy wchodzi się na stronę która ma języka polski i angielski, widać tylko jedną flagę. Jeśli strona jest aktualnie włączona w języku polskim to widoczna jest flaga angielska, zaś kiedy strona jest po angielsku to w menu widnieje flaga polska. Jak tego dokonać?

Na początek kiedy mamy już zainstalowane WPML, przechodzimy do kokpitu > w lewym menu WPML > Languages. W prawej części przechodzimy do sekcji „Menu language switcher”. Powiniśmy mieć domyślnie skonfigurowane wyświetlanie się flag w menu. Usuwamy nasz przełącznik flag, tak jak jest to zaznaczone na poniższym screenie i zapisujemy ustawienia. Teraz przełącznik zniknął z menu, ale zaraz dodamy na nowo w innym miejscu.

Kolejnym krokiem dodania przełącznika języka, jest na nowo stworzenie go w menu. Tym razem flaga aktywnego języka będzie ukryta.

Na serwerze przez klienta FTP, otwieramy plik function.php (pamiętamy o tym, aby był to plik dziecka naszego tematu graficznego). Na końcu pliku, ale przed zamknięciem tagu ?> wklejamy poniższy kod.

 

 

function custom_languages_menu($items,$args) {
    if (function_exists('icl_get_languages')) {
        $languages = icl_get_languages('skip_missing=0');
        if(1 < count($languages)){
            foreach($languages as $l){
                if(!$l['active']) {
                    $items = $items.'<li class="menu-item-'.$l['language_code'].'"><a href="'. $l['url'].'"><img src="'.$l['country_flag_url'].'" alt="'.$l['code'].'" /></a></li>';
                }
            }
        }
    }
    return $items;
}
add_filter( 'wp_nav_menu_items', 'custom_languages_menu',10,2 );

 

Od teraz cieszymy się nowym przełącznikiem języków.