Resolved
Reported for: WPML SEO 2.2.2
Resolved in: WPML SEO 2.2.3
Overview of the issue
When using RankMath SEO or Yoast SEO with our add-on WPML SEO, you might experience incorrect hreflang values in the sitemap. Instead of using the hreflang values set in WPML’s language settings, the sitemap takes the language code (e.g., nz, au) instead of the expected full code (e.g., en-nz, en-au).
Workaround
Please, make sure of having a full site backup of your site before proceeding.
- Open the …/wp-content/plugins/wp-seo-multilingual/classes/Shared/Sitemap/BaseAlternateLangHooks.php file.
- Look for line 180.
- Replace:
private function getAlternateLinks( $alternateLangs ) { $buildAlternateLink = function ( $url, $lang ) { return '<xhtml:link rel="alternate" hreflang="' . esc_attr( $lang ) . '" href="' . esc_url( $url ) . '" />'; }; - With:
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 ) . '" />'; };