[Php] 言語WPMLを隠す


Answers

プラグインWPMLのフラグをチェックアウトすることができます

プラグインからplugin_wpml_flag_in_menu()関数を使用して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:あなたがさらに支援が必要な場合は、exampeのために、アクティブな言語に対するこのデバッグ関数の出力を表示することができます:

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 ) );
        }
    }
}
Question

私は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'].'';
            }
        }
    }
}

そのすべてのセレクタには影響しません。