问题概述
当将 RankMath SEO 或 Yoast SEO 与我们的附加组件 WPML SEO 一起使用时,您可能会在 XML 站点地图中遇到不正确的 hreflang 值。XML 站点地图没有使用 WPML 语言设置中设定的 hreflang 值,而是采用了语言代码(例如 nz、au),而非预期的完整代码(例如 en-nz、en-au)。
临时解决方法
此问题已在 WPML SEO 2.2.3 中修复。 更新即可在您的站点上解决此问题,因此只有在您还无法更新时,才需要此临时解决方法。
请在继续操作之前,确保已对站点进行了完整站点备份。
- 打开 …/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 ) . '" />'; };