WPML
apply_filters( 'wpml_language_codes_map', array $map )
タイプ
filter
WPMLバージョン
5.0.0

説明

言語コードからWPMLがURLで使用するコードへのマップをフィルターします。

WPML 5.0では、言語には2つのコードがあります。language_codeは保存されるコードであり、変更されることはありません。URLコードは訪問者が目にするセグメントであり、例えば/de-de/のようになります。WPMLがURLコードを修飾するとこれら2つは異なるものになります。これは、同じステップで1つの言語に対して2つの国を追加した場合や、サイト所有者がURLコードを編集した場合に発生します。

このフィルターはURLコンバーター自体が読み取るマップであるため、WPMLが構築するリンクと矛盾することは決してありません。言語のアドレスを取得するには、これを使用します。国旗や完全なURLを含む、アクティブな言語のすべてのデータを読み取るには、wpml_active_languagesを使用します。

ユーザーがマップを構築し、WPMLがそれを書き換えます。WPMLは認識しているすべてのキーの値をその言語のURLコードに置き換え、その他のキーは渡されたままの状態にします。WPMLが言語を追加することはないため、空の配列は空のまま返されます。まずWPML code => WPML codeとしてマップを構築し、次にフィルターを適用します。WPMLは自身のコードでも同じ処理を行っています。

引数

パラメーター
  • $map(array) 自身で構築するWPML code => codeのマップ。WPMLは、認識している各キーの値をその言語のURLコードに置き換えます。WPMLが認識しないキーは、渡された値をそのまま保持します。
戻り値
(array) WPMLが認識している各言語のURLコードを含む、同じマップ。WPMLはキーを追加しないため、読み取りたいすべての言語を渡してください。

使用例

マップを読み取り、言語が使用するURLセグメントを確認します。この例では言語ごとに1行書き出します。wpml_active_languagesを使用して言語リストを読み取るため、そのフィルターと同様にwpアクションの後に実行されます。

例
function my_language_url_codes() {
    $codes = apply_filters( 'wpml_active_languages', null );
    if ( empty( $codes ) ) {
        return;
    }

    $identity = array_combine( array_keys( $codes ), array_keys( $codes ) );
    $map      = apply_filters( 'wpml_language_codes_map', $identity );

    foreach ( $map as $language_code => $url_code ) {
        echo esc_html( $language_code . ' is served at /' . $url_code . '/' ) . '<br />';
    }
}

言語のURLコードを変更するには、WPML » 設定 » 言語で編集します。言語を別のアドレスに移動するためにこのフィルターを使用しないでください。WPMLは、受信したURLを解析する際やリンクを構築する際にマップを読み取るため、どの言語も所有していない値を指定すると、WPMLが解決できないアドレスが生成されます。

wpml_decode_custom_field, wpml_footer_language_selector, wpml_add_language_form_field, wpml_ls_exclude_in_menu, wpml_is_rtl, wpml_alternate_hreflang, wpml_head_langs, wpml_must_translate_canonical_url, wpml_browser_redirect_language_params, wpml_active_languages

すべてのサイト全体の言語情報フック(30件)