vendredi 25 septembre 2026

À propos

Contact

Outils & workflow

WP-CLI et multisite : administrer tout un réseau en ligne de commande

Le paramètre --url, les boucles sur wp site list, la création de sites et les opérations réseau : gérer un multisite sans jamais ouvrir l'interface d'administration.

Par Clément Hadrot • 26 décembre 2022 • 5 min de lecture • Aucun commentaire
WP-CLI et multisite : administrer tout un réseau en ligne de commande

Administrer un réseau multisite WordPress de plusieurs dizaines de sites via l’interface web tient vite de l’épreuve : activer une extension site par site, vérifier une option, mettre à jour un thème réseau. WP-CLI traite un multisite avec la même aisance qu’une installation simple, à condition de bien comprendre un paramètre central : --url, qui indique à quel sous-site s’applique chaque commande. Ce tutoriel couvre les opérations réseau les plus courantes ; la configuration d’alias SSH pour piloter plusieurs serveurs distants relève d’un autre sujet.

Le rôle du paramètre –url

L'essentiel à retenir : --url désigne le sous-site ciblé pour chaque commande ; wp site list et une boucle bash pour agir sur tout le réseau ; wp site create pour provisionner un nouveau site en une commande

Sur une installation multisite, la plupart des commandes WP-CLI ont besoin de savoir sur quel sous-site elles opèrent — sans quoi elles s’appliquent par défaut au site principal du réseau, ce qui provoque des erreurs déroutantes quand on croit cibler un sous-site précis :

wp plugin activate mon-plugin --url=boutique.mon-reseau.fr
wp option get blogname --url=blog.mon-reseau.fr
wp theme list --url=agence-client-a.mon-reseau.fr

Sans ce paramètre, une commande comme wp plugin activate active bien l’extension sur le réseau au sens de sa disponibilité, mais n’active pas nécessairement son usage effectif sur chaque sous-site si l’extension n’est pas activée en réseau — la distinction entre activation réseau et activation par site reste l’un des pièges les plus fréquents du multisite.

Lister les sites du réseau

La commande wp site list retourne l’ensemble des sous-sites, avec leurs identifiants et URLs :

wp site list --fields=blog_id,url,registered --format=table
+---------+--------------------------------+---------------------+
| blog_id | url                            | registered          |
+---------+--------------------------------+---------------------+
| 1       | https://mon-reseau.fr/         | 2020-01-15 09:00:00 |
| 2       | https://boutique.mon-reseau.fr | 2021-03-02 14:20:00 |
| 3       | https://blog.mon-reseau.fr     | 2022-06-11 11:45:00 |
+---------+--------------------------------+---------------------+

Le format CSV, plus pratique à traiter par script, s’obtient avec --format=csv.

Agir sur tous les sites avec une boucle bash

Combinée à une boucle shell, cette liste devient la base de scripts d’administration réseau puissants. Pour activer une extension sur l’ensemble des sous-sites, par exemple après validation qu’elle est compatible avec tout le réseau :

for url in $(wp site list --field=url --allow-root); do
  echo "Activation sur $url"
  wp plugin activate mon-plugin --url="$url" --allow-root
done

Ou pour générer un rapport de version de thème actif sur chaque site du réseau, utile avant une campagne de mise à jour :

for url in $(wp site list --field=url --allow-root); do
  theme=$(wp theme list --status=active --field=name --url="$url" --allow-root)
  echo "$url : $theme"
done

Créer un nouveau site en une commande

Le provisionnement d’un nouveau sous-site, opération répétitive sur un réseau en croissance (typiquement une agence qui héberge un site par client sur une infrastructure mutualisée), se réduit à une seule commande :

wp site create --slug=nouveau-client \
  --title="Site du nouveau client" \
  --email=admin@mon-agence.fr \
  --allow-root

Pour un réseau configuré en sous-domaines plutôt qu’en sous-répertoires, l’option --subdomain ajuste la commande en conséquence, à condition que le DNS wildcard soit déjà en place pour accepter ce nouveau sous-domaine.

Opérations réseau globales

Certaines commandes agissent directement au niveau du réseau, sans nécessiter de --url par site :

CommandeEffet
wp super-admin listListe les super-administrateurs du réseau
wp super-admin add utilisateurAccorde les droits de super-administrateur réseau
wp site delete 3 --yesSupprime le site d’identifiant 3, y compris ses tables dédiées
wp network meta listListe les métadonnées globales du réseau (nécessite une extension de gestion réseau récente)

La suppression d’un site via wp site delete retire irréversiblement toutes ses tables dédiées de la base de données — une opération à ne jamais lancer sans confirmation préalable de la bonne cible, l’identifiant numérique étant plus fiable qu’un slug potentiellement ambigu.

Mettre à jour le cœur et les extensions réseau

La mise à jour du cœur WordPress s’effectue une seule fois pour l’ensemble du réseau, les fichiers étant partagés :

wp core update --allow-root
wp core update-db --network --allow-root

Le paramètre --network sur update-db garantit que la mise à jour de structure de base de données s’applique à l’ensemble des tables de chaque sous-site, pas seulement au site principal.

Sur un réseau de cinquante sites clients, une opération qui prendrait une journée entière via l’interface web se réduit à quelques minutes de script bash. La contrepartie : une erreur dans la boucle se répercute aussi cinquante fois plus vite qu’une erreur manuelle isolée.

En résumé

WP-CLI transforme l’administration d’un réseau multisite d’une corvée répétitive en une série de scripts reproductibles et versionnables. La maîtrise du paramètre --url et de la boucle wp site list couvre l’essentiel des besoins quotidiens ; le reste consiste à composer ces briques selon les opérations spécifiques du réseau administré.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi