Mis à jour le 1er novembre 2026. Article réécrit : ce que WordPress met à jour seul (vérifié dans la documentation et le code de la version 7.1), retour arrière automatique des extensions et ses limites, routine WP-CLI sur staging, script de surveillance testé, et ce qu’une IA peut ou ne peut pas faire.
Automatiser la maintenance d’un site WordPress ne veut pas dire le laisser se réparer seul. WordPress installe déjà beaucoup de mises à jour sans intervention, et sait annuler certaines d’entre elles. Mais il ne détecte pas tout, ne réessaie pas toujours et ne teste jamais votre parcours de commande ou votre formulaire de contact. Ce guide décrit ce que le cœur automatise, ce qu’il faut ajouter (sauvegardes, staging, surveillance) et où placer l’IA.
Ce que WordPress met à jour tout seul
La documentation d’administration de WordPress et le code de la version 7.1 permettent de dresser ce tableau :
| Élément | Comportement par défaut | Réglage |
|---|---|---|
| Versions mineures du cœur (maintenance, sécurité) | Automatiques | WP_AUTO_UPDATE_CORE |
| Versions majeures du cœur | Automatiques sur les sites installés depuis WordPress 5.6 ; les sites plus anciens gardent leur réglage | Écran Mises à jour, WP_AUTO_UPDATE_CORE |
| Traductions | Automatiques | filtres |
| Extensions et thèmes | Désactivées, activables une par une | « Activer les mises à jour auto », wp plugin auto-updates enable |
| Correctifs de sécurité critiques d’extensions | Poussés dans des cas particuliers décidés par l’équipe de sécurité de WordPress.org | filtre auto_update_plugin |
WP_AUTO_UPDATE_CORE accepte true (tout), false (rien) ou 'minor' (versions mineures seulement). Définie dans wp-config.php, la constante prend le pas sur le réglage de l’écran Mises à jour. AUTOMATIC_UPDATER_DISABLED coupe toutes les mises à jour automatiques ; la documentation le déconseille fortement.
// wp-config.php : versions mineures seulement, cron système
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
define( 'DISABLE_WP_CRON', true );
Avec WP-CLI, l’état des mises à jour automatiques se lit et se modifie sans passer par l’administration :
wp plugin list --fields=name,version,update,auto_update
wp plugin auto-updates enable --all
wp theme auto-updates enable twentytwentyfive
Les limites des mises à jour automatiques
Le retour arrière ne couvre que les extensions actives
Depuis WordPress 6.6, après la mise à jour automatique d’une extension, WordPress envoie une requête vers la page d’accueil de son propre site (« loopback »). S’il y détecte une erreur fatale PHP, il restaure la version précédente et prévient l’adresse e-mail d’administration. Le code de la version 7.1 confirme deux restrictions : les extensions inactives sont ignorées par ce contrôle, et rien d’équivalent n’existe pour les thèmes. La proposition d’intégration précise aussi que la même extension sera retentée au contrôle suivant.
Ce mécanisme ne voit que les erreurs fatales. Un formulaire qui n’envoie plus rien, un panier qui ne calcule plus les frais de port ou une mise en page cassée ne déclenchent aucun retour arrière.
Un échec du cœur n’est pas toujours retenté
Lors d’une mise à jour du cœur, WordPress note les échecs. Pour la plupart des codes d’erreur, il refuse ensuite de retenter la même mise à jour, d’une version A vers une version B. Nous l’avons constaté le 29 octobre 2026 : notre site de test est resté en 7.1.3 après un échec vers 7.1.4, comme le détaille notre article sur cette mise à jour. Vérifiez régulièrement :
wp core version
wp core check-update
wp option get auto_core_update_failed --format=json
WP-Cron dépend des visites
Les tâches planifiées de WordPress, mises à jour automatiques comprises, se déclenchent au chargement des pages. Un site peu visité ou servi par un cache complet peut les exécuter en retard. La documentation de WordPress recommande alors de désactiver ce déclenchement (DISABLE_WP_CRON) et de confier l’exécution au planificateur du système :
*/5 * * * * cd /var/www/votre-site && wp cron event run --due-now > /dev/null 2>&1
PHP et le serveur ne sont pas concernés
WordPress ne met à jour ni PHP, ni le serveur web, ni la base de données. Deux failles critiques de PHP ont été corrigées le 21 octobre 2026 : seul votre hébergeur, ou vous-même sur un VPS, pouvait les appliquer. Voir notre alerte sur ces failles PHP et la mise à jour sécurisée d’un VPS.
Une routine de maintenance en quatre étapes
1. Sauvegarder et vérifier l’archive
Une sauvegarde faite pendant l’incident arrive trop tard. Exportez la base et archivez wp-content avant chaque intervention, dans un dossier réservé à l’administrateur, puis conservez une copie hors du serveur.
2. Mettre à jour sur une copie de staging
La copie de staging reproduit la version de PHP, de WordPress, les extensions et le thème de la production, sans être publique ni indexée. Le script suivant enchaîne sauvegarde, contrôles, mises à jour et vérification des codes HTTP. Il s’arrête à la première erreur (set -euo pipefail).
#!/usr/bin/env bash
# À lancer sur la copie de staging, avec l'utilisateur propriétaire des fichiers.
set -euo pipefail
SITE="/var/www/staging"
DEST="/var/backups/wordpress"
DATE=$(date +%F-%H%M)
WP="wp --path=$SITE"
umask 077
$WP db export "$DEST/base-$DATE.sql"
tar -czf "$DEST/wp-content-$DATE.tar.gz" -C "$SITE" wp-content
tar -tzf "$DEST/wp-content-$DATE.tar.gz" > /dev/null
$WP core verify-checksums
$WP core check-update
$WP plugin list --update=available --fields=name,version,update_version
$WP theme list --update=available --fields=name,version,update_version
$WP core update --minor
$WP core update-db
$WP plugin update --all
$WP theme update --all
for URL in "/" "/contact/" "/wp-login.php"; do
CODE=$(curl -s -o /dev/null -w '%{http_code}' "https://staging.exemple.fr$URL")
echo "$URL $CODE"
done
wp plugin update accepte aussi --dry-run pour lister sans installer, --exclude pour écarter une extension, et --minor ou --patch pour limiter le type de version.
3. Tester ce que WordPress ne teste pas
Après les mises à jour, parcourez sur la copie les pages qui rapportent : envoi d’un formulaire, ajout au panier et commande de test, connexion d’un client, recherche. Ouvrez la console du navigateur pour repérer les erreurs JavaScript. Si une extension pose problème, désactivez-la seule sur la copie (wp plugin deactivate nom-extension) pour confirmer la cause.
4. Appliquer en production avec une procédure écrite
Une fois la copie validée, appliquez les mêmes mises à jour en production, en dehors des heures de forte activité. La procédure tient en quelques lignes : commandes exactes, contrôles après coup, retour arrière prévu (restauration de la sauvegarde) et personne responsable. Le plan de reprise après sinistre décrit comment tester une restauration complète.
Surveiller entre deux interventions
Un serveur peut répondre 200 en affichant une page blanche ou le message « Il y a eu une erreur critique sur ce site ». Une supervision utile couvre :
- la disponibilité, vue depuis l’extérieur ;
- le contenu, avec la présence d’un texte attendu et l’absence de message d’erreur ;
- l’hébergement, avec l’espace disque et l’état des services ;
- la maintenance, avec les mises à jour en attente et les échecs signalés ;
- la sécurité et l’intégrité, pour détecter l’apparition de fichiers injectés, de webshells ou de redirections pirates via une surveillance continue des malwares WordPress.
Le script suivant, en lecture seule, ne prévient qu’au changement d’état (panne puis rétablissement) grâce à un fichier d’état. Nous l’avons exécuté quatre fois de suite : aucune ligne au premier passage normal, une alerte « OK -> KO » quand le texte attendu manquait, aucune au second échec, une ligne « KO -> OK » au retour.
#!/usr/bin/env bash
# Contrôle de page en lecture seule, alerte au changement d'état uniquement.
SITE_URL="https://www.exemple.fr/"
EXPECTED_TEXT="Votre Entreprise"
ERROR_PATTERNS="Fatal error|Erreur lors de la connexion à la base de données|erreur critique"
STATE_FILE="$HOME/.etat-supervision"
LOG_FILE="$HOME/supervision-wordpress.log"
PAGE=$(mktemp)
HTTP_CODE=$(curl -s -L --max-time 15 -o "$PAGE" -w '%{http_code}' "$SITE_URL")
CURL_EXIT=$?
ETAT="OK"; MOTIF=""
if [ "$CURL_EXIT" -ne 0 ] || [ "$HTTP_CODE" != "200" ]; then
ETAT="KO"; MOTIF="HTTP $HTTP_CODE (curl $CURL_EXIT)"
elif ! grep -q "$EXPECTED_TEXT" "$PAGE"; then
ETAT="KO"; MOTIF="texte attendu absent"
elif grep -Eq "$ERROR_PATTERNS" "$PAGE"; then
ETAT="KO"; MOTIF="message d'erreur dans la page"
fi
rm -f "$PAGE"
PRECEDENT=$(cat "$STATE_FILE" 2>/dev/null || echo "OK")
if [ "$ETAT" != "$PRECEDENT" ]; then
echo "$(date '+%F %T') $SITE_URL : $PRECEDENT -> $ETAT $MOTIF" >> "$LOG_FILE"
# Ajoutez ici l'envoi vers votre canal : courriel, messagerie, outil de supervision.
fi
echo "$ETAT" > "$STATE_FILE"
Planifiez-le toutes les cinq minutes avec cron, sous un compte sans droits élevés. Lisez aussi la boîte de l’adresse d’administration (Réglages > Général) : c’est là qu’arrivent les avis d’échec de mise à jour et les messages du mode de récupération, que WordPress envoie depuis la version 5.2 quand une erreur fatale bloque le site. Pour une supervision plus complète (sondes, Prometheus, alertes), voir notre guide de surveillance serveur ; pour lire les journaux après une alerte, notre guide sur les attaques dans les logs WordPress.
Ce que l’IA peut faire, et ce qu’elle ne doit pas faire
| L’IA peut | L’IA ne doit pas |
|---|---|
| Résumer les notes de version des extensions à mettre à jour et signaler les changements majeurs | Décider seule d’une mise à jour en production |
| Trier des journaux d’erreurs agrégés et proposer une cause probable | Exécuter des commandes shell depuis une requête web |
| Rédiger le brouillon d’une procédure ou d’un script, à relire | Recevoir les identifiants de la base ou le contenu de wp-config.php |
Comparer deux rapports wp plugin list avant et après | Garantir la compatibilité d’une extension |
Les extensions qui promettent une maintenance « auto-réparatrice » par l’IA ajoutent du code avec des droits élevés et des appels vers des services externes : passez-les au crible de notre checklist d’audit des plugins IA. Depuis WordPress 6.9, l’Abilities API permet d’exposer des actions à des agents d’IA ; nos essais sur une installation 7.1 montrent que les capacités fournies par défaut sont en lecture seule : n’en ajoutez pas qui modifient le site sans validation humaine. Le même principe s’applique quand vous créez un blog WordPress avec l’IA : l’IA prépare, une personne valide. Avant une migration WordPress, la routine ci-dessus sert de point de départ : sauvegarde vérifiée et site à jour.
Questions fréquentes
Faut-il activer les mises à jour automatiques des extensions ?
Pour les extensions bien maintenues et actives, oui : le retour arrière en cas d’erreur fatale limite le risque. Pour une boutique ou un site dont un parcours rapporte de l’argent, préférez une mise à jour hebdomadaire sur staging, car une panne sans erreur fatale n’est pas détectée.
Pourquoi mon site n’a-t-il pas installé la dernière version de sécurité ?
Soit WP-Cron ne s’est pas déclenché, soit une tentative a échoué et WordPress ne la retente pas. Vérifiez wp core version et wp option get auto_core_update_failed, puis lancez la mise à jour manuellement après une sauvegarde.
Une sauvegarde chez l’hébergeur suffit-elle ?
Elle aide, mais vous devez savoir la restaurer et connaître sa fréquence et sa durée de conservation. Gardez au moins une copie indépendante et testez une restauration sur staging.
Une IA peut-elle maintenir mon site seule ?
Non. Elle peut résumer, trier et rédiger. Les décisions qui touchent la production restent humaines, appuyées sur une sauvegarde et un test.
Sources
- WordPress Developer Resources, Upgrading WordPress (mises à jour automatiques,
WP_AUTO_UPDATE_CORE,AUTOMATIC_UPDATER_DISABLED) - Make WordPress Core, Merge Proposal: Rollback Auto-Update, 19 avril 2024
- Code source de WordPress 7.1,
class-wp-automatic-updater.phpetclass-core-upgrader.php - WordPress Developer Resources, Hooking WP-Cron Into the System Task Scheduler
- WP-CLI, wp plugin auto-updates enable, wp plugin update, wp db export
- WordPress.org, WordPress 7.1.4, 28 octobre 2026