Comment sauvegarder, archiver et installer par lots des extensions WordPress avec WP‑CLI

Lors d’un diagnostic de performance ou d’une enquête sur une infection malware dans WordPress, il devient souvent nécessaire de désactiver l’ensemble des extensions à un moment donné du processus. Il est également judicieux de sauvegarder toutes les extensions WordPress individuellement sous forme d’archives .zip, afin de prévenir toute perte ou confusion durant les manipulations.

Réinstaller manuellement chaque extension à partir de ses fichiers zip serait une tâche particulièrement fastidieuse. C’est pourquoi, dans cet article, je vous montre comment automatiser entièrement cette procédure.

Nous commencerons par compresser chaque extension WordPress dans un fichier .zip distinct, que nous placerons dans un dossier temporaire. Pour compléter ce script, j’ai également inclus une boucle simple permettant de réinstaller en lot toutes ces sauvegardes via WP‑CLI.

1. Sauvegarde de la base de données

Connectez-vous dans le répertoire racine de votre site via SSH, puis exécutez :

wp db export sauvegarde.sqlCode language: JavaScript (javascript)

Cela génère un fichier SQL contenant l’intégralité de la base de données.

2. Archivage des fichiers du site

Au même emplacement, empaquetez l’intégralité du site :

zip -r archive_site.zip * .htaccessCode language: CSS (css)

Cette commande comprime tous les fichiers, incluant .htaccess, en omettant les autres fichiers cachés.

Important : n’oubliez pas de supprimer ensuite le fichier .sql et l’archive .zip afin d’éviter toute exposition non sécurisée.

3. Installation de WP‑CLI (si non présent)

Sur un serveur Unix (Linux, macOS…) :

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --infoCode language: JavaScript (javascript)

Cette suite de commandes permet de télécharger, tester, rendre exécutable, et déplacer WP‑CLI dans votre PATH.

4. Installation et activation groupées d’extensions

a. Installation en lots :

wp plugin install extension1 extension2 extension3

Remplacez extensionX par le slug trouvé sur le répertoire officiel WordPress.

b. Activation simultanée :

Ajoutez --activate :

wp plugin install extension1 extension2 --activate

Parfait pour les extensions ne nécessitant pas de configuration initiale .

5. Gestion de vos extensions

WP‑CLI simplifie largement l’administration :

  • Lister les extensions : wp plugin list
  • Activer ou désactiver plusieurs extensions : wp plugin activate ext1 ext2 wp plugin deactivate ext1 ext2 wp plugin deactivate --all
  • Mettre à jour en masse : wp plugin update --all
  • Désinstaller : wp plugin deactivate ext-name --uninstall && wp plugin delete ext-name

6. Réinstallation en masse (option avancée)

Pour forcer la réinstallation de toutes les extensions issues du dépôt WordPress :

wp plugin install $(wp plugin list --field=name) --forceCode language: JavaScript (javascript)

Cela télécharge à nouveau chaque extension depuis le dépôt officiel.

7. Sauvegarde de chaque plugin

On crée un répertoire temporaire pour nos sauvegardes:

# répertoire temporaire
mkdir /tmp/pluginsCode language: PHP (php)

Et on crée un script qui zippe et sauvegarde chaque plugin dans notre répertoire temporaire:

WPDIR=/home/www/example.com/wp-content/plugins
TMPDIR="/tmp/plugins"

for DIR in ${WPDIR}/
do 
    echo "Zipping $DIR" | tr -d /
    zip -r --quiet "${TEMPDIR}${DIR%/}.zip" "$DIR"
doneCode language: JavaScript (javascript)

Installation en lot de plugins WordPress via WP-CLI

Ce script vous permet d’installer automatiquement plusieurs fichiers zip de plugins WordPress à l’aide de WP-CLI. Exécutez ce script depuis le dossier temporaire où vous avez stocké tous vos fichiers zip de sauvegarde de plugins.

  • Assurez-vous de modifier la variable WPPATH pour qu’elle pointe vers le répertoire de votre installation WordPress.
  • Pour obtenir le chemin absolu de votre installation WordPress, exécutez la commande pwd dans un terminal SSH lorsque vous êtes dans le dossier principal de WordPress.

Exemple de script :

WPPATH="/home/www/example.com/wp-content/plugins"

for PLUGIN in *.zip
do
  <em># Passe si ce n’est pas un fichier zip</em>
  [ -f "$PLUGIN" ] || break

  <em># Installe et active le plugin</em>
  wp plugin install "$PLUGIN" --activate --path="$WPPATH"
doneCode language: PHP (php)

Ce script facilite l’installation de plusieurs plugins sans avoir à les installer manuellement un par un.

Script automatisé de sauvegarde

#!/bin/bash

# -----------------------------------------------------------------------------
# Script de sauvegarde, archivage et gestion groupée des extensions WordPress
# Compatible Linux/macOS avec WP-CLI
# by Matt Biscay
# https://mattbiscay.com
# -----------------------------------------------------------------------------

set -euo pipefail
IFS=$'\n\t'

# Configuration utilisateur
PLUGINS=("seo-by-rank-math" "wordpress-seo" "query-monitor")  # Slugs du repo WP
WP_CLI_PATH="/usr/local/bin/wp"
DATE=$(date +"%Y-%m-%d_%H-%M")
BACKUP_DIR="backups"

# 1. Vérifie que WP-CLI est installé, sinon le télécharge
if ! command -v wp &> /dev/null; then
  echo "WP-CLI non détecté. Installation..."
  curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  chmod +x wp-cli.phar
  sudo mv wp-cli.phar "$WP_CLI_PATH"
fi

echo "WP-CLI version : $($WP_CLI_PATH --version)"

# 2. Crée le répertoire de sauvegarde
mkdir -p "$BACKUP_DIR"

# 3. Sauvegarde de la base de données
echo "Export de la base de données..."
$WP_CLI_PATH db export "$BACKUP_DIR/db-$DATE.sql"

# 4. Archivage des fichiers WordPress
echo "Archivage des fichiers du site..."
zip -r "$BACKUP_DIR/site-files-$DATE.zip" . -x "$BACKUP_DIR/*"

# 5. Installation + activation des extensions listées
echo "Installation et activation des extensions : ${PLUGINS[*]}..."
$WP_CLI_PATH plugin install "${PLUGINS[@]}" --activate

# 6. (Optionnel) Réinstallation forcée
# echo "Réinstallation des extensions installées..."
# $WP_CLI_PATH plugin install $($WP_CLI_PATH plugin list --field=name) --force

echo "✅ Script terminé. Sauvegardes disponibles dans ./$BACKUP_DIR"Code language: PHP (php)

Conclusion

WP‑CLI est un outil puissant et rapide, parfait pour automatiser :

  • Sauvegardes (base + fichiers zip)
  • Installations, activations et mises à jour groupées
  • Entretien et réinstallation d’extensions

Il se révèle particulièrement utile sur les environnements de staging, serveurs cloud ou VPS.

Vous imaginez un projet WordPress ou WooCommerce ? Je vous accompagne à chaque étape pour concrétiser vos ambitions, avec rigueur et transparence.

Discutons de votre projet ensemble »

Matt

Développeur certifié WordPress & WooCommerce chez Codeable, administrateur système et enseignant-chercheur, je mets mon expertise au service de vos projets web.

Ma priorité : des sites performants, fiables et sécurisés, pensés pour offrir la meilleure expérience utilisateur. J’accompagne chaque client avec écoute et pédagogie, pour transformer vos idées en solutions concrètes et durables.

Profitez de solutions WordPress et WooCommerce sur-mesure, pensées pour optimiser durablement votre site.
Explorez les leviers pour booster l’impact de votre site web.

Opinions