- Statut
- Résolu
- Signalé pour
- WPML Multilingual CMS 3.8.3
- Résolu dans
- 3.9.0
Aperçu de l’anomalie
Lorsqu’une langue possède un code à deux lettres dans l’étiquette et un code plus long dans les paramètres régionaux par défaut, ce dernier est utilisé pour générer les balises hreflang.
Solution de contournement
Un correctif sera fourni avec la prochaine version majeure de WPML, où le mot « tag » sera remplacé par « hreflang » pour éviter toute confusion et où la logique correcte sera utilisée.
En attendant, vous pouvez suivre les étapes suivantes pour résoudre ce problème :
- Faites une sauvegarde de votre site.
- Trouvez et modifiez le fichier class-wpml-seo-headlangs.php dans le dossier ../sitepress-multilingual-cms/classes/seo/, où sitepress-multilingual-cms est le répertoire où WPML est installé.
- Vers la ligne 139, vous devriez trouver le code suivant :
private function get_hreflang_code( $lang ) { $tag = $lang['tag']; $locale = $lang['default_locale']; $hreflang_code = $this->get_best_code( array( $tag, $locale ) ); $hreflang_code = str_replace( '_', '-', $hreflang_code ); $hreflang_code = strtolower( $hreflang_code ); if ( $this->is_valid_hreflang_code( $hreflang_code ) ) { return trim( $hreflang_code ); } return ''; } - Remplacez-le par ce code :
private function get_hreflang_code( $lang ) { $ordered_keys = array( 'tag', 'default_locale' ); $hreflang_code = ''; foreach ( $ordered_keys as $key ) { if ( array_key_exists( $key, $lang ) && trim( $lang[ $key ] ) ) { $hreflang_code = $lang[ $key ]; break; } } $hreflang_code = strtolower( str_replace( '_', '-', $hreflang_code ) ); if ( $this->is_valid_hreflang_code( $hreflang_code ) ) { return trim( $hreflang_code ); } return ''; }