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

Accessibilité

Yoast SEO et le balisage de titre : un conflit qui casse la hiérarchie

Un titre invisible inséré par une extension SEO perturbe la hiérarchie perçue par un lecteur d'écran, sans que rien ne le trahisse à l'écran. Voici comment le repérer et le neutraliser.

Par WordPress Développement • 21 septembre 2023 • 4 min de lecture • Aucun commentaire
Yoast SEO et le balisage de titre : un conflit qui casse la hiérarchie

« Deux balises h1 sur la même page » : ce message, remonté par un outil d’audit automatisé, ne pointait vers aucun titre visible en double à l’écran. La cause se trouvait ailleurs, dans une combinaison entre le gabarit du thème et un réglage par défaut d’une extension SEO très répandue, qui insère parfois un titre masqué visuellement mais parfaitement lisible par un lecteur d’écran.

Ce texte ne traite pas du paramétrage SEO de l’extension elle-même, largement documenté par ailleurs, mais spécifiquement de ce conflit de hiérarchie et de sa correction, transposable à toute extension générant un titre additionnel dans le flux du document.

Le symptôme : une hiérarchie cohérente à l’écran, incohérente au clavier

Sur le gabarit d’archive concerné, le titre affiché à l’écran ressemblait à une structure normale : le nom de la catégorie en grand, suivi des articles listés. Pourtant, la navigation par titres d’un lecteur d’écran révélait un titre supplémentaire, non visible, juste avant le titre de catégorie attendu, reprenant le nom du site suivi d’un séparateur.

Ce titre supplémentaire provenait d’un pattern inséré automatiquement par le thème dans l’en-tête de certains gabarits, initialement prévu pour un usage ponctuel, mais activé sur l’ensemble des archives sans que personne ne s’en rende compte visuellement, puisque du CSS le masquait entièrement.

Pourquoi le CSS masque le problème, pas le DOM

Une règle display: none ou visibility: hidden retire un élément de l’affichage visuel, mais ne le retire pas nécessairement de l’arbre d’accessibilité restitué aux technologies d’assistance selon la méthode de masquage utilisée. Un titre masqué avec une classe utilitaire de type « screen-reader-text » mal choisie reste donc parfaitement audible pour un lecteur d’écran, même invisible à l’œil.

Diagnostiquer avec l’inspecteur d’accessibilité, pas seulement visuellement

L'essentiel à retenir : Le titre parasite reste invisible mais bien présent dans le DOM ; La navigation par titres d'un lecteur d'écran le restitue quand même ; Un filtre WordPress suffit à corriger le gabarit sans toucher au plugin

Le seul moyen fiable de détecter ce type de conflit consiste à ouvrir le panneau d’accessibilité des DevTools et à inspecter l’arbre complet des titres de la page, plutôt que de se fier à l’apparence visuelle du gabarit. Une recherche rapide dans le code source rendu, à la recherche des balises h1 présentes, confirme ensuite l’origine exacte du titre parasite.

<h1 class="masque-visuellement">WP Moderne — Blog développement WordPress</h1>
<header>
  <h1>Catégorie : Accessibilité</h1>
</header>

Le correctif : neutraliser le titre parasite sans toucher au plugin

Plutôt que de modifier les réglages internes de l’extension SEO, qui pourraient être réinitialisés à la prochaine mise à jour, corrigez le gabarit du thème responsable de l’insertion. Si le pattern fautif provient d’un filtre WordPress ajouté par un thème ou une extension maison, retirez-le proprement plutôt que de masquer davantage l’élément en CSS.

add_action( 'wp', function () {
    remove_action( 'wp_body_open', 'inserer_titre_masque_archives' );
} );

Si le titre masqué provient réellement d’un comportement par défaut de l’extension SEO sur certains gabarits, vérifiez d’abord la documentation officielle des filtres qu’elle expose avant d’intervenir directement dans son code, afin de ne pas casser une fonctionnalité prévue pour d’autres besoins légitimes, comme un texte de repli pour les moteurs de recherche.

  • Repérer le titre parasite dans l’arbre d’accessibilité, pas à l’écran
  • Identifier précisément quel gabarit ou quel filtre l’insère
  • Corriger à la source plutôt que de masquer davantage en CSS

Étendre le contrôle à l’ensemble du site

Une fois ce conflit résolu sur un gabarit, vérifiez les autres types de pages générées par WordPress : page d’accueil, article, page statique, résultat de recherche. Un même pattern d’en-tête partagé entre plusieurs gabarits peut reproduire le même défaut ailleurs, avec un titre visible différent qui masque une hiérarchie tout aussi incohérente en arrière-plan.

Un titre invisible à l’écran reste un titre bien réel pour un lecteur d’écran : ne jugez jamais une hiérarchie de titres uniquement d’après ce que montre l’affichage.

Prévenir la récidive après une mise à jour

Ajoutez un test automatisé qui vérifie l’unicité du h1 sur chaque gabarit critique, afin qu’une future mise à jour de thème ou d’extension ne réintroduise pas silencieusement ce type de conflit sans que personne ne le remarque avant plusieurs mois.

En résumé

Un titre masqué visuellement peut parfaitement rester audible pour un lecteur d’écran et casser la hiérarchie perçue : inspectez toujours l’arbre d’accessibilité réel plutôt que l’apparence de la page, et corrigez le gabarit à la source plutôt que d’empiler un masquage CSS supplémentaire.

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