Le mode multisite de WordPress permet de gérer plusieurs sites depuis une seule installation, avec une base de code partagée et des tables dédiées par site. C’est une architecture puissante pour un réseau de sites vitrines d’une même agence, un ensemble de sites de franchise, ou un intranet avec plusieurs espaces. Mais elle demande des réflexes différents de ceux d’un site WordPress classique, en particulier côté développement et administration en ligne de commande.
Cet article rassemble les astuces les plus utiles au quotidien pour qui gère ou développe sur un réseau multisite, en complément de la documentation officielle plus générale sur l’activation du mode réseau.
Changer de contexte avec switch_to_blog
Depuis un contexte d’exécution (un cron, une tâche WP-CLI, un script d’administration réseau), il est souvent nécessaire d’agir sur un site précis du réseau sans y être physiquement connecté. La fonction switch_to_blog() change temporairement le contexte d’exécution :
switch_to_blog( 5 );
$articles = get_posts( array(
'post_type' => 'post',
'posts_per_page' => 10,
) );
restore_current_blog();
L’appel à restore_current_blog() est impératif après chaque switch_to_blog() : l’oublier laisse le script dans le contexte du mauvais site, avec des effets de bord potentiellement sérieux si une écriture en base a lieu ensuite par erreur sur le mauvais site.
Parcourir tous les sites du réseau
Pour exécuter une action sur l’ensemble des sites (une mise à jour de réglage, une vérification), la fonction get_sites() couplée à une boucle avec switch_to_blog() reste la méthode standard :
$sites = get_sites( array( 'number' => 0 ) );
foreach ( $sites as $site ) {
switch_to_blog( $site->blog_id );
// Action à exécuter sur chaque site
restore_current_blog();
}

Administrer le réseau en ligne de commande
WP-CLI propose une famille de commandes dédiées au multisite, particulièrement utiles pour des opérations en masse difficiles à réaliser depuis l’interface graphique :
wp site list
wp site create --slug=nouveau-site --title="Nouveau site"
wp site option get siteurl --url=exemple.reseau.fr
La commande wp site list donne en un coup d’œil la liste complète des sites du réseau, avec leur identifiant, ce qui évite de naviguer dans l’interface d’administration réseau pour une simple vérification.
Activer un plugin réseau plutôt que site par site
Un plugin peut être activé de deux façons différentes sur un multisite : réseau par réseau (actif automatiquement sur tous les sites, présents et futurs), ou site par site (chaque administrateur de site l’active individuellement). Le choix a un vrai impact organisationnel :
wp plugin activate mon-plugin --network
Un plugin activé au niveau réseau n’apparaît plus dans la liste des extensions activables individuellement par les administrateurs de site, ce qui garantit une cohérence technique sur l’ensemble du réseau, un choix souvent pertinent pour un plugin de sécurité ou de conformité commun à tous les sites.
Partager des données entre les sites du réseau
Certaines données ont vocation à être partagées entre tous les sites d’un réseau : une liste d’utilisateurs communs (native au multisite), un jeu de réglages globaux, ou un ensemble de contenus dupliqués automatiquement. Pour des réglages globaux, une option stockée sur le site principal, lue via switch_to_blog(), reste une solution simple :
function get_reglage_reseau( $cle ) {
switch_to_blog( get_main_site_id() );
$valeur = get_option( $cle );
restore_current_blog();
return $valeur;
}
Gérer les domaines personnalisés
Un réseau multisite en configuration sous-domaines ou sous-répertoires reste simple à administrer nativement. Dès qu’un site du réseau doit répondre sur un domaine complètement différent, l’extension officielle « WordPress MU Domain Mapping » historique a été largement remplacée par une gestion native depuis les versions récentes de WordPress, via la fonction wp_insert_site() et la configuration du domaine directement en base, sans plugin dédié dans la majorité des cas modernes.
Pièges fréquents à éviter
- Oublier
restore_current_blog()après unswitch_to_blog(), avec des effets de bord difficiles à diagnostiquer - Confondre les tables préfixées par identifiant de site (
wp_2_posts) et les tables globales du réseau (wp_users,wp_blogs) - Activer un plugin en réseau alors qu’il n’a été testé que sur un seul site, sans vérifier sa compatibilité multisite
- Oublier qu’un utilisateur du réseau peut avoir des rôles différents sur chaque site auquel il est rattaché
Sur un réseau de plusieurs dizaines de sites, une simple boucle
foreachavecswitch_to_blog()mal refermée peut laisser une tâche planifiée écrire silencieusement sur le mauvais site pendant des semaines.
En résumé
Le multisite WordPress reste une architecture solide pour mutualiser l’administration de plusieurs sites, à condition de bien maîtriser ses spécificités : le changement de contexte avec switch_to_blog(), la distinction entre tables globales et tables par site, et les commandes WP-CLI dédiées qui simplifient considérablement les opérations en masse sur l’ensemble du réseau.