Le WordPress d'aujourd'hui, décodé pour les développeurs

Multilingue

WPML et Yoast SEO : deux balises hreflang qui se contredisent sur la même page

Un audit SEO révèle deux jeux de balises hreflang générés par WPML et par Yoast sur la même page. Comment identifier le coupable et trancher.

Par WordPress Développement • 7 avril 2020 • 4 min de lecture • Aucun commentaire
WPML et Yoast SEO : deux balises hreflang qui se contredisent sur la même page

Un audit SEO commandé après une baisse de trafic international tombe sur quelque chose d’inattendu : en affichant le code source d’une seule page produit, deux blocs <link rel="alternate" hreflang="..."> apparaissent, pointant chacun vers des URL légèrement différentes pour la version espagnole du même contenu.

Ce n’est pas une erreur de configuration hreflang classique — mal formée, langue erronée, URL cassée — c’est un doublon pur et simple, généré par deux sources distinctes qui ignorent chacune l’existence de l’autre : WPML d’un côté, Yoast SEO de l’autre.

Symptôme : Google Search Console signale des hreflang en conflit

Le rapport « Ciblage international » de Google Search Console remonte des avertissements de type « erreurs de retour hreflang » sur plusieurs URL. En creusant dans le code source d’une page, deux ensembles de balises coexistent effectivement :

<!-- Généré par WPML -->
<link rel="alternate" hreflang="es" href="https://exemple.fr/es/produit-x/" />
<link rel="alternate" hreflang="fr" href="https://exemple.fr/produit-x/" />

<!-- Généré par Yoast SEO -->
<link rel="alternate" hreflang="es-ES" href="https://exemple.fr/es/produit-x-2/" />
<link rel="alternate" hreflang="fr-FR" href="https://exemple.fr/produit-x/" />

Les codes de langue diffèrent (es contre es-ES), et pire, les URL espagnoles pointent vers deux slugs distincts : produit-x et produit-x-2, séquelle d’une ancienne traduction dupliquée jamais nettoyée. Google, face à deux déclarations contradictoires sur la même URL source, ignore purement et simplement le hreflang de la page.

Diagnostic : Yoast génère hreflang dès qu’il détecte un multilingue actif

L'essentiel à retenir : Deux plugins peuvent générer hreflang en parallèle sans le savoir ; Le code source révèle des URL contradictoires ; Un seul réglage suffit à couper le doublon

Ce que peu d’équipes savent : Yoast SEO intègre depuis longtempsune détection automatique des extensions multilingues populaires, WPML compris, et génère ses propres balises hreflang basées sur les traductions qu’il détecte via l’API de WPML. L’intention est louable — assurer une compatibilité par défaut — mais si WPML génère déjà ses propres balises (ce qui est son comportement natif et attendu), le résultat est un doublon, pas une redondance sans risque.

Le problème racine ici n’est pas un bug d’affichage, c’est une hypothèse erronée : Yoast suppose qu’il est le seul générateur de hreflang du site, WPML suppose la même chose de son côté. Aucun des deux ne vérifie l’existence de balises déjà présentes avant d’injecter les siennes.

Correctif : désactiver la génération hreflang côté WPML, garder Yoast

Le réglage se trouve dans WPML → Réglages, section « Langue par défaut et détection du navigateur » : une case permet de désactiver la génération automatique des balises hreflang par WPML lui-même. C’est ce réglage qu’il faut décocher, pas l’inverse.

  • Pourquoi garder Yoast plutôt que WPML : Yoast intègre le hreflang dans une logique SEO globale cohérente avec le reste du plugin (canonical, sitemap XML), plus simple à auditer d’un seul endroit
  • Vérifier ensuite que le sitemap XML de Yoast référence bien les bonnes URL de traduction, sans les anciens doublons de slugs
  • Nettoyer les traductions orphelines : dans ce cas précis, produit-x-2 était une traduction abandonnée qu’il fallait supprimer, pas simplement exclure du hreflang

Après ce changement, un seul jeu de balises hreflang subsiste par page, avec les codes de langue normalisés au format IETF (es-ES plutôt que es seul, plus précis pour cibler une variante régionale).

Ce cas n’est pas isolé aux deux mêmes extensions

Le même conflit se produit avec n’importe quelle combinaison d’un plugin multilingue et d’un plugin SEO qui propose une génération hreflang « automatique » : dès qu’un plugin SEO annonce détecter et gérer le multilingue tout seul, il faut vérifier en priorité si le plugin multilingue génère déjà ses propres balises, et désactiver l’un des deux. Il n’existe pas de bonne combinaison « les deux activés en même temps », quel que soit le duo d’extensions.

En résumé

Deux jeux de balises hreflang sur une même page ne sont jamais un signe de robustesse, c’est toujours un conflit de configuration entre deux plugins qui ignorent leur cohabitation. La règle à retenir : un seul générateur de hreflang par site, et un audit systématique du code source après chaque activation d’un nouveau plugin SEO sur un site déjà multilingue.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi