我使用的是WPML语言,无法为下一步找到解决方案:
在语言切换器上我想隐藏语言,比如说 - "他",如果当前语言可以说例如"ar",那么当我们在阿拉伯语网站上我们不会在选择器上看到希伯来语,同样的事情如果我们用希伯来语,阿拉伯语就不会显示出来.
缩短词语:我想要的是 - 如果我们在阿拉伯语网站上 - 希伯来语旗帜将被隐藏.
我尝试了什么:
function language_selector_flags(){ $languages = icl_get_languages('skip_missing=0'); if(!empty($languages)){ if(ICL_LANGUAGE_CODE=='en') { $order = array('ar'); //Specify your sort order here } elseif(ICL_LANGUAGE_CODE=='he') { $order = array('en', 'ar'); //Specify your sort order here } foreach ($order as $l) { if (isset($languages[$l])) { $l = $languages[$l]; //grab this language from the unsorted array that is returned by icl_get_languages() //Display whatever way you want -- I'm just displaying flags in anchors (CSS: a {float:left; display:block;width:18px;height:12px;margin:0 2px;overflow:hidden;line-height:100px;}) if($l['active']) { $class = "active"; $url=""; } else { $class = ''; $url = 'href="'.$l['url'].'"'; } echo ''; echo $l['language_code'].''; } } } }
它对所有选择器都没有影响.
您可以在菜单中查看插件WPML Flag.
您可以使用plugin_wpml_flag_in_menu()
插件中的函数(请参阅此处的源代码)并替换:
// Exclude current viewing language if( $l['language_code'] != ICL_LANGUAGE_CODE ) { // ... }
同
// Include only the current language if( $l['language_code'] == ICL_LANGUAGE_CODE ) { // ... }
如果我理解正确的话,只显示当前的语言/标志.
ps:如果你需要进一步的帮助,你可以举例说明这个调试函数的输出为活动语言:
function debug_icl_active_language() { $languages = icl_get_languages( 'skip_missing=0' ); foreach( (array) $languages as $l ) { if( $l['active'] ) { printf( '<pre> Total languages: %d - Active: %s </pre>', count( $languages ), print_r( $l, TRUE ) ); } } }