WPML
状态
已解决
报告针对
WPML SEO 2.2.2
解决于
WPML SEO 2.2.3
相关插件/主题
Rank Math SEO
主题标签
Compatibility

问题概述

当将 RankMath SEOYoast SEO 与我们的附加组件 WPML SEO 一起使用时,您可能会在 XML 站点地图中遇到不正确的 hreflang 值。XML 站点地图没有使用 WPML 语言设置中设定的 hreflang 值,而是采用了语言代码(例如 nzau),而非预期的完整代码(例如 en-nzen-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 ) . '" />';
        };
            

所有已知问题 →