Je vais être cash : si ton site WordPress n’a pas un plan de rollback clair et rapide, tu ne “gères” pas les mises à jour. Tu joues. Et du coup tu repousses, tu repousses… jusqu’au jour où une release sécurité sort et là tu updates en panique. Mauvais deal.
L’actualité WordPress l’a rappelé violemment avec la séquence 6.9.2 → 6.9.3 → 6.9.4. Une update sécurité, puis un fast-follow pour un problème de rendu côté front sur certains thèmes, puis encore un correctif parce que tout n’était pas totalement couvert. Ce n’est pas un procès de WordPress. C’est juste la réalité d’un écosystème énorme. La seule réponse sérieuse, c’est un filet.
Voilà le playbook que j’utilise en freelance/studio pour pouvoir dire : “OK, j’update. Si ça casse, je reviens en arrière en moins de 20 minutes.”
Le vrai sujet des mises à jour WordPress : le risque opérationnel, pas “l’update”
Quand un client te dit “on n’update pas parce qu’on a peur”, ce n’est pas de la flemme. C’est souvent un signal qu’il n’y a pas d’environnement de test crédible, pas de sauvegarde restaurable, et pas de procédure quand ça part en écran blanc.
Et franchement, je comprends. Une mise à jour WordPress, ce n’est pas “core uniquement”. C’est un assemblage : core + thème + plugins + mu-plugins + snippets + config serveur + cache + CDN. Tu peux avoir un core nickel et un plugin qui fait planter l’admin. Ou un thème qui utilise un hook de manière borderline et qui se prend une régression sur une version mineure. Ça arrive. Donc on arrête de compter sur la chance.
Sponsorisé par Le Scribouillard
Besoin de contenu optimisé SEO ?
Utilisez la meilleure plateforme française de création de contenu assistée par IA ! Et générez des articles pour moins de 1€ !
Staging WordPress : si ça ne ressemble pas à la prod, ça ne vaut rien
Le staging “copie du site sur un sous-domaine” est une bonne base. Le staging “un WordPress installé vite fait chez toi” est souvent inutile. Le piège, c’est de tester sur un environnement qui n’a rien à voir avec la prod, puis de découvrir les problèmes uniquement après la mise en ligne.
Ce que je veux identique, ou au minimum très proche : version PHP, extensions, limite mémoire, config d’opcache, stack cache (plugin de cache, varnish, cache Nginx), et le comportement CDN si tu en as un. Même la différence HTTP/2 vs HTTP/3 peut te sortir des bugs bizarres selon les stacks, donc je garde ça dans un coin de tête.
Deux détails qui évitent des accidents idiots : staging protégé (auth HTTP, IP allowlist, ou au moins noindex + désindexation propre), et pas d’envoi d’emails réels (sinon tu vas relancer des paniers WooCommerce ou spammer des formulaires en test).
Avant toute update : snapshot fichiers + base de données (et preuve que ça se restaure)
Une “sauvegarde” qui n’a jamais été restaurée, ce n’est pas une sauvegarde. C’est une prière. Moi je veux un bouton “retour arrière” qui marche, et je veux le savoir avant le jour où ça brûle.
Dans la vraie vie, le plus fiable et le plus rapide, c’est souvent un snapshot au niveau hébergeur (fichiers + base, cohérent, daté), surtout si tu dois rollback en quelques minutes. Mais je ne m’arrête pas là : j’aime avoir un export DB en plus, et une copie des fichiers critiques (wp-content en priorité). Parce que le jour où le snapshot est lent, ou indisponible, ou partiel, tu es content d’avoir un plan B.
Le test de restaurabilité ne doit pas être une usine à gaz. Une fois de temps en temps (ou après un gros changement), tu prends ton snapshot et tu le restaures sur un staging “jetable”. Si ça boot, si l’admin s’ouvre, si le front n’est pas explosé, tu sais que ton parachute s’ouvre.
Smoke tests WordPress : 5 minutes qui t’évitent 3 heures de dépannage
Je ne fais pas une recette de test de 40 points à chaque fois. Je fais des tests simples, répétables, et qui couvrent l’essentiel : l’accueil, une page modèle un peu “chargée” (builder, blocs, shortcodes), une page article, et une page qui tape des données dynamiques (recherche, archive filtrée, espace membre, formulaire).
Si c’est du WooCommerce, je veux aussi au moins un ajout au panier et une étape de checkout jusqu’à la page de paiement (sans forcément payer). Si c’est un site lead-gen, j’envoie un formulaire et je vérifie qu’il arrive au bon endroit. Ça peut paraître basique, mais c’est précisément ce qui casse quand un plugin change un comportement ou qu’un thème a une dépendance fragile.
Et je check deux zones qui mentent bien : l’admin (qui peut marcher alors que le front est KO), et les pages servies en cache (qui peuvent masquer un bug tant que tu n’as pas purgé).
Tests visuels : attraper l’écran blanc et les régressions “silencieuses”
La séquence 6.9.2/6.9.3 a rappelé un classique : tu peux te retrouver avec un front “blanc” ou des templates qui se chargent mal sur des cas particuliers. Le genre de bug où tu peux ouvrir deux pages et croire que tout va bien… jusqu’à ce qu’un utilisateur tombe sur la page qui casse.
Sans outillage lourd, ma version minimaliste consiste à capturer 3 à 5 pages clés en screenshots avant update, puis à refaire la même chose après update, sur staging. Tu compares vite fait. Si tu as déjà Playwright dans ton stack, c’est encore mieux parce que tu peux automatiser deux parcours critiques et garder les images en artefacts. Mais même “à la main”, ce petit rituel attrape énormément de régressions CSS, de headers qui sautent, de blocs qui changent de style, de composants qui disparaissent.
Le point important : fais tes captures avec cache purgé (site + CDN si possible sur staging), sinon tu compares du vieux HTML à du nouveau CSS et tu te racontes des histoires.
Rollback WordPress en 20 minutes : la procédure que j’applique (core, plugins, thème)
Un rollback rapide, ce n’est pas “on verra”. C’est une séquence décidée à l’avance, avec un ordre. Mon ordre à moi : stabiliser le front, puis stabiliser l’admin, puis comprendre. Si tu fais l’inverse, tu perds du temps et tu stresses tout le monde.
Dans les incidents classiques, tu as trois leviers rapides avant de tout restaurer : désactiver le plugin suspect, revenir à une version précise de plugin/core, ou repasser temporairement sur un thème de secours (le temps de diagnostiquer). Ça suffit souvent à remettre le site en service sans restauration complète. Et si ça ne suffit pas, le snapshot te remet sur les rails.
WP-CLI aide beaucoup parce que tu peux agir vite, même quand l’admin est dans les choux. Voilà un exemple réaliste de “kit de survie” (à adapter, évidemment) :
# 1) Avant update : export DB + note la version actuelle
wp core version
wp db export --add-drop-table --gzip --path=/var/www/html \
/var/backups/wp-db-$(date +%F-%H%M).sql.gz
# 2) Update (à faire sur staging d'abord, puis prod)
wp core update
wp plugin update --all
wp theme update --all
# 3) Si le site casse : rollback ciblé (exemples)
# Revenir à une version de core
wp core update --version=6.9.2 --force
# Revenir à une version de plugin (si tu connais la version stable)
wp plugin install woocommerce --version=9.9.0 --force
# Désactiver vite un plugin qui met le feu
wp plugin deactivate plugin-qui-casse
# Repasser sur un thème par défaut temporairement
wp theme activate twentytwentyfiveDeux remarques terrain. Un : tu n’as pas toujours la possibilité de “downgrader proprement” un plugin si la migration DB a déjà tourné et a modifié des données. D’où l’intérêt du snapshot global. Deux : sur certains hébergements, le plus rapide reste de restaurer snapshot et de re-jouer proprement l’update sur staging, puis en prod, plutôt que d’empiler des demi-mesures.
Auto-updates : ce que j’automatise, et ce que je garde sous contrôle
Je n’ai rien contre l’auto-update, au contraire. Mais il faut la mériter. Je l’active quand j’ai un staging qui tient la route, des sauvegardes restaurables, et un minimum d’observabilité (au moins logs + uptime). Sinon, l’auto-update, c’est juste une manière de découvrir un incident au réveil.
En général, j’accepte plus facilement l’auto-update sur les releases de sécurité (quand c’est bien cadré) et sur des plugins “infrastructure” très standard, plutôt que sur des plugins métiers sensibles (e-commerce, membership, booking) ou des builders qui touchent à beaucoup de rendu. Et je préfère largement auto-update sur staging + déploiement contrôlé en prod, plutôt qu’auto-update direct en prod sur un site qui facture.
Release sécurité en urgence : comment aller vite sans faire n’importe quoi
Quand une release sécurité sort, le mauvais réflexe c’est de se dire “on n’a pas le temps, on pousse direct en prod”. Le bon réflexe, c’est d’aller vite avec le process.
Concrètement : tu snapshot, tu updates sur staging, tu passes tes smoke tests + un mini visuel sur tes pages critiques, et tu déploies en prod. Si tout est en place, ça ne prend pas une demi-journée. Si tu n’as rien en place, oui, tu vas te retrouver à choisir entre risque sécurité et risque de casse. Et c’est exactement pour éviter ce dilemme que tu installes le filet en amont.
Et si tu dois vraiment pousser en prod (site exposé, vulnérabilité active, pression forte), tu le fais avec un plan de retour arrière prêt. Pas “au cas où”. Prêt, testé, chronométré.
Les erreurs qui transforment une simple mise à jour en incident
La plus fréquente, c’est de confondre “j’ai un backup” et “je peux restaurer”. Juste après, je vois beaucoup “staging pas fidèle” : PHP différent, cache absent, pas de CDN, pas les mêmes mu-plugins, pas les mêmes variables d’environnement. Forcément, le staging dit oui et la prod dit non.
Autre classique : ne pas purger correctement les caches après une update. Tu te retrouves avec des mélanges de versions, et tu diagnostiques un bug qui n’existe pas. Le troisième piège, c’est de tout updater en une fois, sans savoir si c’est le core, le thème ou le plugin qui a déclenché le problème. Même sans être maniaque, séparer un minimum te donne un avantage énorme quand tu dois rollback.
Dernier point, plus subtil : ne pas noter les versions. Si tu ne sais pas ce qui était installé avant, ton rollback devient “au feeling”. Et le feeling, en prod, c’est rarement un bon outil.
Conclusion : le jour où ton rollback est prêt, les mises à jour deviennent banales
Le but n’est pas d’avoir zéro risque. Le but, c’est d’avoir un risque maîtrisé, avec une sortie de secours. Quand tu peux rollback en 20 minutes, tu changes complètement ta relation aux updates WordPress. Tu n’es plus en mode “roulette russe”, tu es en mode exploitation.
Et surtout, tu arrêtes de traiter les releases sécurité comme des événements. Elles deviennent une routine. Une routine qui protège tes sites, tes clients, et ton sommeil.