Skip to content

Instantly share code, notes, and snippets.

@ithoq
Forked from drrobotnik/language-switcher.php
Created April 17, 2018 09:31
Show Gist options
  • Save ithoq/3360f6ed94f880fb6253476f3d496e37 to your computer and use it in GitHub Desktop.
Save ithoq/3360f6ed94f880fb6253476f3d496e37 to your computer and use it in GitHub Desktop.
function wp_nav_menu_items_filter($items, $args){
global $sitepress_settings, $sitepress;
$current_language = $sitepress->get_current_language();
$default_language = $sitepress->get_default_language();
// menu can be passed as integer or object
if(isset($args->menu->term_id)) $args->menu = $args->menu->term_id;
$abs_menu_id = icl_object_id($args->menu, 'nav_menu', false, $default_language );
$settings_menu_id = icl_object_id( $sitepress_settings[ 'menu_for_ls' ], 'nav_menu', false, $default_language );
if ( $abs_menu_id == $settings_menu_id || false === $abs_menu_id ) {
$languages = $sitepress->get_ls_languages();
$items .= '<li class="menu-item menu-item-language menu-item-language-current">';
if(isset($args->before)){
$items .= $args->before;
}
$items .= '<a href="#" onclick="return false">';
if(isset($args->link_before)){
$items .= $args->link_before;
}
$language_name = '';
if ( $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= $languages[ $current_language ][ 'native_name' ];
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] && $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= ' (';
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] ) {
$language_name .= $languages[ $current_language ][ 'translated_name' ];
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] && $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= ')';
}
$alt_title_lang = esc_attr($language_name);
if( $sitepress_settings['icl_lso_flags'] ){
$items .= '<img class="iclflag" src="' . $languages[ $current_language ][ 'country_flag_url' ] . '" width="18" height="12" alt="' . $alt_title_lang . '" title="' . esc_attr( $language_name ) . '" />';
}
$items .= $language_name;
if(isset($args->link_after)){
$items .= $args->link_after;
}
$items .= '</a>';
if(isset($args->after)){
$items .= $args->after;
}
unset($languages[ $current_language ]);
$sub_items = false;
$menu_is_vertical = !isset($sitepress_settings['icl_lang_sel_orientation']) || $sitepress_settings['icl_lang_sel_orientation'] == 'vertical';
if(!empty($languages)){
foreach($languages as $lang){
$sub_items .= '<li class="menu-item menu-item-language menu-item-language-current">';
$sub_items .= '<a href="'.$lang['url'].'">';
$language_name = '';
if ( $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= $lang[ 'native_name' ];
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] && $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= ' (';
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] ) {
$language_name .= $lang[ 'translated_name' ];
}
if ( $sitepress_settings[ 'icl_lso_display_lang' ] && $sitepress_settings[ 'icl_lso_native_lang' ] ) {
$language_name .= ')';
}
$alt_title_lang = esc_attr($language_name);
if( $sitepress_settings['icl_lso_flags'] ){
$sub_items .= '<img class="iclflag" src="'.$lang['country_flag_url'].'" width="18" height="12" alt="'.$alt_title_lang.'" title="' . $alt_title_lang . '" />';
}
$sub_items .= $language_name;
$sub_items .= '</a>';
$sub_items .= '</li>';
}
if( $sub_items && $menu_is_vertical ) {
$sub_items = '<ul class="sub-menu submenu-languages">' . $sub_items . '</ul>';
}
}
if( $menu_is_vertical ) {
$items .= $sub_items;
$items .= '</li>';
} else {
$items .= '</li>';
$items .= $sub_items;
}
}
return $items;
}
} // end class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment