WPML
apply_filters( 'wpml_language_codes_map', array $map )
类型
filter
WPML 版本
5.0.0

说明

过滤语言代码与 WPML 在 URL 中使用的代码之间的映射。

在 WPML 5.0 中,一种语言有两个代码。language_code 是存储的代码,它永远不会改变。URL 代码是访问者看到的片段,例如 /de-de/。当 WPML 限定 URL 代码时(这发生在您在同一步骤中添加同一语言的两个国家/地区时),以及当网站所有者编辑 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 段。该示例为每种语言输出一行。它使用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 个 全站语言信息 钩子