Migrer un site WordPress vers un stack headless peut être libérateur : performances, flexibilité front, architecture moderne. Mais j'ai souvent vu une conséquence trop peu anticipée — une régression de l'accessibilité. Lors d'une migration, on change la façon dont le HTML est généré, comment le DOM est hydraté, comment les interactions sont gérées — et chaque étape peut introduire des erreurs pour les utilisateurs de lecteurs d'écran, de navigateurs clavier-only ou d'autres technologies d'assistance.
Dans cet article, je partage mon approche pratique pour réduire les erreurs d'accessibilité pendant et après la migration WordPress → headless. Ce sont des conseils que j'applique quand je travaille avec Next.js, Gatsby, Nuxt ou tout autre framework front (et en back avec WPGraphQL, REST, Strapi ou Contentful) pour conserver — voire améliorer — l'expérience accessible.
Anticiper l'accessibilité dès la planification
Avant de toucher une ligne de code, je fais en sorte que l'accessibilité fasse partie du cahier des charges. Des décisions d'architecture ont un impact : SSR vs SSG vs CSR, stratégie d'images, gestion des dialogues/modals, routes dynamiques, prévisualisation CMS, etc. Voici ce que j'illustre systématiquement :
Conserver et enrichir le HTML sémantique
WordPress génère souvent un HTML relativement sémantique lorsqu'on utilise des thèmes et des templates bien conçus. En headless, on reprend la responsabilité complète du rendu — il faut donc ne pas la lâcher.
Gérer correctement le routing et les changements de contexte
Les frameworks SPA modifient l'URL sans recharger la page — les lecteurs d'écran doivent être informés. Lors d'une migration, j'ajoute systématiquement des mécanismes pour annoncer les changements importants :
Hydratation, rendu côté client et problèmes courants
L'hydratation peut créer un "flash" ou un contenu inattendu. J'observe souvent :
Pour limiter les risques :
Formulaires, validations et erreurs
Les formulaires sont un autre point d'échec fréquent. En headless, la validation côté client et la présentation des erreurs doivent être accessibles :
Images, médias et contenu riche
La migration entraîne souvent une refonte du pipeline d'images (optimisation, lazy-loading). Pour rester accessible :
Composants interactifs et gestion du focus
Les composants custom (menus, dropdowns, modals, tooltip) demandent une attention particulière :
Outils de test automatisés et intégration continue
L'automatisation est votre alliée pour attraper les régressions. J'intègre régulièrement ces outils :
Configurer le CI pour échouer la build sur régressions critiques permet d'éviter d'envoyer en production des erreurs facilement détectables.
Tests manuels et utilisateurs réels
Aucun outil automatique ne remplace le test humain. J'organise toujours :
Maintenir la qualité côté CMS (WordPress) lorsque headless
Le CMS reste la source de vérité. Pour éviter que des contenus non accessibles ne remontent :
Exemples concrets de pièges rencontrés (et solutions)
| Problème | Cause | Solution |
|---|---|---|
| Skip link invisible | CSS modifié durant la migration | Restaurer visibilité au focus et tester au clavier |
| Dialog non annoncé | Absence de role/aria-modal | Ajouter role="dialog" aria-modal="true" + focus trap |
| Titre de page non mis à jour | SPA navigation sans mise à jour document.title | Mettre à jour title et déplacer le focus sur <main> |
En résumé, aborder l'accessibilité comme une responsabilité transversale — architecture, composant, contenu, CI et tests utilisateurs — est le moyen le plus fiable de minimiser les régressions lors d'une migration vers un stack headless. Dans mes projets, adopter cette démarche permet non seulement de respecter les obligations légales et éthiques, mais aussi d'améliorer l'expérience pour tous.