$converted_url = apply_filters( 'wpml_permalink', string $permalink, string $language_code = null, bool $full_resolution = false );
- 类型
- filter
- 类别
- 获取本地化内容
- WPML 版本
- 3.2.2
说明
过滤 WordPress 固定链接,并根据 WPML 语言设置中设置的语言 URL 格式将其转换为特定语言的固定链接。
这意味着,当“语言 URL 格式”设置为“不同语言使用不同目录”时,固定链接将以 http://domain.com/de 形式返回。当选择“每种语言使用不同的域名”时,固定链接将被转换,以包含分配给所请求语言的正确域名。
参数
- $permalink
- (string) (必填) 要过滤的 WordPress 生成的 URL。
- $language_code
- (string) (可选) 要将 URL 转换成的语言。接受 2 个字母的代码。设置为
null时,根页面将回退到默认语言,所有其他情况则回退到当前语言。默认值为null - $full_resolution
- (boolean) (可选) 启用硬编码 URL 的完全转换。
使用示例
示例 1
例如,如果选择了“不同语言使用不同目录”,我们可以使用以下代码:
// will return http://domain.com/de/contact $wpml_permalink = apply_filters( 'wpml_permalink', 'http://domain.com/contact', 'de' );
示例 2
我们有一个页面 http://example.org/hello/ 及其翻译 http://example.org/fr/bonjour/。假设我们在显示主页 http://example.org 时调用该过滤器。
// displays http://example.org/fr/hello/ (wrong) echo apply_filters( 'wpml_permalink', 'http://example.org/hello/', 'fr' ); // displays http://example.org/fr/bonjour/ (correct) echo apply_filters( 'wpml_permalink', 'http://example.org/hello/', 'fr', true );
关于第二个示例的重要说明:
- 完全转换是一个繁重的过程,因此 WPML 必须将解析后的 URL 保存在数据库中。第一次调用 wpml_permalink 会显著增加数据库查询和加载时间。但后续调用不会使该过程超载。
- 当文章/分类项更新或删除时,数据库持久化记录会被部分清除。访问设置 -> 固定链接时,它会被完全清除(如果您遇到任何问题,这是一个很好的故障排除选项)。
- 如果 URL 无法解析,过滤器 wpml_permalink 将返回原始 URL。
相关钩子
wpml_media_url, wpml_media_id, force_suppress_filters, wpml_get_translated_slug, wpml_home_url, wpml_translate_single_string, wpml_translate_string, wpml_elements_without_translations, wpml_unfiltered_admin_string, wpml_element_link