Pourquoi la maintenance WordPress est non négociable
WordPress motorise 43% du web en 2025. C'est sa popularité qui en fait aussi une cible privilégiée des hackers : 94% des attaques sur WordPress visent des sites avec des extensions ou thèmes obsolètes.
Un site non maintenu, c'est :
- Un risque de piratage (redirections malveillantes, spam, vol de données)
- Une dégradation progressive des performances
- Des incompatibilités qui cassent des fonctionnalités
- Un référencement qui souffre (temps de chargement, indisponibilité)
Hebdomadaire — 10 minutes
Vérifier les mises à jour disponibles
Tableau de bord → Mises à jour
├── WordPress core
├── Extensions (plugins)
└── Thèmes
Procédure sécurisée :
- Faites une sauvegarde complète AVANT toute mise à jour
- Mettez à jour WordPress core en premier
- Mettez à jour les extensions une par une (pas toutes d'un coup)
- Testez les fonctionnalités critiques après chaque mise à jour
Vérifier le bon fonctionnement
- Page d'accueil s'affiche correctement
- Formulaire de contact fonctionne (envoyez un message test)
- Zone admin accessible
Mensuelle — 35 minutes
1. Sauvegarde complète vérifiée
Une sauvegarde non testée n'est pas une sauvegarde.
# Via WP-CLI — sauvegarde complète
wp db export backup-$(date +%Y%m%d).sql
tar -czf backup-files-$(date +%Y%m%d).tar.gz wp-content/
# Via extension : UpdraftPlus (gratuit) ou BackupBuddy (payant)
# Stockage externe obligatoire : Google Drive, S3, Dropbox
Testez votre sauvegarde : restaurez-la sur un sous-domaine de staging au moins une fois par trimestre.
2. Nettoyage de la base de données
-- Via phpMyAdmin ou WP-CLI
-- Supprimer les révisions d'articles (principales sources de gonflement)
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Supprimer les brouillons auto-save
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
-- Supprimer les commentaires spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Nettoyer les métadonnées orphelines
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;
-- Optimiser toutes les tables
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;
Via extension : WP-Optimize automatise tout ça avec une interface graphique.
3. Audit sécurité
# Scan de malware avec Wordfence ou Sucuri
# Via WP-CLI avec Wordfence installé :
wp wordfence scan
# Vérifier les fichiers modifiés récemment (signe d'intrusion)
find wp-content/ -newer wp-config.php -type f | grep -v cache | head -20
# Vérifier les utilisateurs admin non autorisés
wp user list --role=administrator
Permissions de fichiers correctes :
# Fichiers : 644
find . -type f -exec chmod 644 {} \;
# Répertoires : 755
find . -type d -exec chmod 755 {} \;
# wp-config.php : 600 (lecture uniquement par l'owner)
chmod 600 wp-config.php
4. Audit performance
# Score PageSpeed avant/après optimisation
curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://votresite.fr&key=VOTRE_CLE" | python3 -m json.tool | grep '"score"'
Actions systématiques :
- Vider le cache (extension de cache + cache du CDN)
- Purger les images non utilisées dans la médiathèque
- Vérifier que Gzip/Brotli est actif
// Dans .htaccess — vérifiez la présence de ces lignes
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
</IfModule>
5. Contrôle des formulaires et emails
- Testez le formulaire de contact (vérifiez la réception)
- Vérifiez les logs d'envoi d'email (extensions WP Mail SMTP)
- Contrôlez que les emails ne partent pas en spam
6. Vérification des 404 et liens brisés
# Screaming Frog (gratuit jusqu'à 500 URLs) ou :
wp post list --post_status=publish --format=csv --fields=ID,post_name | while IFS=, read id slug; do
code=$(curl -s -o /dev/null -w "%{http_code}" "https://votresite.fr/$slug/")
[ "$code" != "200" ] && echo "$slug : $code"
done
Trimestrielle — 1 heure
- Audit complet Google Search Console (erreurs d'indexation, Core Web Vitals)
- Suppression des extensions inactives et thèmes non utilisés
- Revue des comptes utilisateurs (supprimer les anciens)
- Mise à jour du certificat SSL si nécessaire
- Test de restauration de la sauvegarde sur un environnement staging
Automatiser avec WP-CLI et Cron
#!/bin/bash
# /scripts/wp-maintenance.sh — à lancer en cron mensuel
SITE_DIR="/var/www/votresite"
BACKUP_DIR="/backups/$(date +%Y%m)"
mkdir -p $BACKUP_DIR
cd $SITE_DIR
# Sauvegarde
wp db export $BACKUP_DIR/db-$(date +%Y%m%d).sql --allow-root
tar -czf $BACKUP_DIR/files-$(date +%Y%m%d).tar.gz wp-content/ --exclude=wp-content/cache
# Mises à jour
wp core update --allow-root
wp plugin update --all --allow-root
wp theme update --all --allow-root
# Nettoyage
wp db optimize --allow-root
wp cache flush --allow-root
echo "Maintenance terminée : $(date)"
# Crontab — exécution le 1er de chaque mois à 3h
0 3 1 * * /scripts/wp-maintenance.sh >> /var/log/wp-maintenance.log 2>&1
Pour aller plus loin : WP-CLI commands — référence complète des commandes en ligne de commande.