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が認識しないキーは、渡された値をそのまま保持します。
- $map(array) 自身で構築する
- 戻り値
- (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