- 状态
- 已解决
- 报告针对
- WPML SEO 2.2.2
- 解决于
- WPML SEO 2.2.3
- 相关插件/主题
- Rank Math SEO
- 主题标签
- Compatibility
问题概述
当将 RankMath SEO 或 Yoast SEO 与我们的附加组件 WPML SEO 一起使用时,您可能会在 XML 站点地图中遇到不正确的 hreflang 值。XML 站点地图没有使用 WPML 语言设置中设定的 hreflang 值,而是采用了语言代码(例如 nz、au),而非预期的完整代码(例如 en-nz、en-au)。
临时解决方法
请在继续操作之前,确保已对站点进行了完整站点备份。
- 打开 …/wp-content/plugins/wp-seo-multilingual/classes/Shared/Sitemap/BaseAlternateLangHooks.php 文件。
- 找到第 180 行。
- 将:
private function getAlternateLinks( $alternateLangs ) { $buildAlternateLink = function ( $url, $lang ) { return '<xhtml:link rel="alternate" hreflang="' . esc_attr( $lang ) . '" href="' . esc_url( $url ) . '" />'; };
- 替换为:
private function getAlternateLinks( $alternateLangs ) { $buildAlternateLink = function ( $url, $lang ) { $languages = apply_filters( 'wpml_active_languages', null, [] ); $hreflang = isset( $languages[ $lang ]['tag'] ) ? $languages[ $lang ]['tag'] : $lang; return '<xhtml:link rel="alternate" hreflang="' . esc_attr( $hreflang ) . '" href="' . esc_url( $url ) . '" />'; };