我正在使用WPML语言,无法找到下一步的解决方案:
在语言转换器上,我想隐藏语言,比如说"he",如果现在的语言是"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 '<a '.$url.' style="background:url('.$l['country_flag_url'].') no-repeat;" class="flag '.$class.'">';
echo $l['language_code'].'';
}
}
}
}它一点也不影响选择器。
发布于 2014-01-09 00:12:54
function language_selector_flags(){
$languages = icl_get_languages('skip_missing=0');
if(!empty($languages)){
$filter = array();
$filter['ar'] = array( 'he' );
// set your other filters here
$active_language = null;
foreach ($languages as $l)
if($l['active']) {
$active_language = $l['language_code'];
break;
}
$filter = $active_language && isset( $filter[$active_language] ) ? $filter[$active_language] : array();
foreach ($languages as $l) {
//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( in_array( $l['language_code'], $filter) )
continue;
if($l['active']) { $class = "active"; $url=""; } else { $class = ''; $url = 'href="'.$l['url'].'"'; }
echo '<a '.$url.' class="flag '.$class.'"><img src="', $l['country_flag_url'], '" alt="', esc_attr( $l['language_code'] ), '" /></a>';
}
}
}编辑:如果我说得对,你的客户(我想)不想让他的客户(尤其是以色列人)知道他也为阿拉伯语使用者提供服务。如果是这样,那么您可以解析Accept-Language头并根据结果筛选语言选择器。
发布于 2013-12-23 03:09:32
您可以查看插件http://wordpress.org/plugins/wpml-flag-in-menu/。
您可以使用插件中的plugin_wpml_flag_in_menu()函数(see source code here)并替换:
// 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 ) );
}
}
}发布于 2013-12-23 13:17:04
我有一些有用的链接给你,请先浏览一下:
http://wpml.org/forums/topic/hide-language-vs-display-hidden-languages-in-your-profile-not-working/
http://wpml.org/forums/topic/hide-one-language/
http://wpml.org/forums/topic/hiding-active-language-in-menu/
http://wpml.org/forums/topic/language-selector-how-to-hide-one-language/
谢谢
https://stackoverflow.com/questions/20346340
复制相似问题