首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏语言WPML

隐藏语言WPML
EN

Stack Overflow用户
提问于 2013-12-03 08:39:03
回答 4查看 3.5K关注 0票数 14

我正在使用WPML语言,无法找到下一步的解决方案:

在语言转换器上,我想隐藏语言,比如说"he",如果现在的语言是"ar",那么当我们在阿拉伯网站上时,我们不会在选择器上看到希伯来语,如果我们使用希伯来语,阿拉伯语就不会显示。

关于缩写词:我想要的是--如果我们在阿拉伯网站上--希伯来语的旗帜将被隐藏。

我试过的是:

代码语言:javascript
复制
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'].'';
            }
        }
    }
}

它一点也不影响选择器。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-09 00:12:54

代码语言:javascript
复制
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头并根据结果筛选语言选择器。

票数 3
EN

Stack Overflow用户

发布于 2013-12-23 03:09:32

您可以查看插件http://wordpress.org/plugins/wpml-flag-in-menu/

您可以使用插件中的plugin_wpml_flag_in_menu()函数(see source code here)并替换:

代码语言:javascript
复制
// Exclude current viewing language             
if( $l['language_code'] != ICL_LANGUAGE_CODE )
{
    // ...
}

使用

代码语言:javascript
复制
// Include only the current language                
if( $l['language_code'] == ICL_LANGUAGE_CODE )
{
    // ...
}

只显示当前语言/标志,如果我正确理解的话。

ps:如果您需要进一步的帮助,可以举个例子,向我们展示活动语言的这个调试函数的输出:

代码语言:javascript
复制
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 ) );
        }
    }
}
票数 6
EN

Stack Overflow用户

发布于 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/

谢谢

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20346340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档