# 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.

- Auteur : Clément Hadrot
- Publié le : 2022-12-26
- Mis à jour le : 2022-12-26
- Catégorie : Outils &amp; workflow
- URL : https://wpmoderne.dev.wordpress-developpement.fr/outils/wp-cli-multisite-administrer-reseau/

## L’essentiel

- --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

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 :

| Commande | Effet |
| --- | --- |
| `wp super-admin list` | Liste les super-administrateurs du réseau |
| `wp super-admin add utilisateur` | Accorde les droits de super-administrateur réseau |
| `wp site delete 3 --yes` | Supprime le site d'identifiant 3, y compris ses tables dédiées |
| `wp network meta list` | Liste 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é.
