WPML

问题概述

当将 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 ) . '" />';
        };

所有已知问题

仍然遇到此问题?

如果更新无法解决问题,请提出支持问题,我们将与您一起排查。