WordPress Multisite : gérer plusieurs sites avec une seule installation
WordPress Multisite transforme une installation WordPress unique en un réseau de sites partageant le même code, les mêmes plugins et les mêmes thèmes. C’est la solution idéale pour gérer les sites de plusieurs filiales, les versions multilingues d’un même site, ou un réseau de blogs d’entreprise. Au Sénégal, c’est particulièrement utile pour les agences web qui gèrent plusieurs clients ou les organisations présentes dans plusieurs pays d’Afrique de l’Ouest.
1. Quand utiliser Multisite (et quand l’éviter)
Cas d’usage pertinents
- Agence web : un réseau de sites clients partageant les mêmes plugins et thèmes — maintenance centralisée
- Entreprise multi-pays : votresite.sn, votresite.ci, votresite.ml — même base, contenu localisé
- Université/école : un sous-site par département (informatique.universite.sn, droit.universite.sn)
- Réseau de blogs : plusieurs auteurs/rédacteurs avec leurs propres espaces
- Franchise : chaque franchisé a son sous-site avec son contenu local
Quand NE PAS utiliser Multisite
- Sites très différents : un e-commerce et un blog n’ont pas les mêmes besoins de plugins — utilisez des installations séparées
- Sites à fort trafic : un site du réseau qui reçoit beaucoup de trafic impacte tous les autres
- Hébergement mutualisé : Multisite nécessite un VPS ou dédié pour de bonnes performances
- Client unique : si vous gérez un seul site, Multisite ajoute de la complexité inutile
2. Installation de WordPress Multisite
Prérequis
- WordPress déjà installé et fonctionnel
- Accès FTP ou SSH au serveur
- Désactiver tous les plugins temporairement
- Accès au fichier
wp-config.phpet.htaccess
Étape 1 : Activer Multisite dans wp-config.php
Ajoutez cette ligne au-dessus de /* That's all, stop editing! */ :
/* Activer WordPress Multisite */
define('WP_ALLOW_MULTISITE', true);
Étape 2 : Configurer le réseau
- Rechargez le tableau de bord WordPress
- Allez dans Outils → Installation du réseau
- Choisissez la structure :
- Sous-domaines : site1.votresite.com, site2.votresite.com (nécessite un wildcard DNS)
- Sous-répertoires : votresite.com/site1, votresite.com/site2 (plus simple à configurer)
- Donnez un titre à votre réseau et cliquez « Installer »
Étape 3 : Ajouter le code généré
WordPress vous donne du code à ajouter. Dans wp-config.php, ajoutez au-dessus de /* That's all, stop editing! */ :
/* Configuration Multisite */
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // false = sous-répertoires, true = sous-domaines
define('DOMAIN_CURRENT_SITE', 'votresite.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Dans .htaccess, remplacez les règles WordPress existantes par :
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Ajouter un slash final pour /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Étape 4 : Se reconnecter
Reconnectez-vous à WordPress. Vous verrez un nouveau menu « Mes sites » et « Administration du réseau » en haut.
3. Gérer le réseau de sites
Créer un nouveau site
Administration du réseau → Sites → Ajouter
- Adresse du site : le slug (ex: « dakar » pour votresite.com/dakar)
- Titre : nom du site
- Langue : Français
- Email admin : l’email de l’administrateur de ce sous-site
Rôles et permissions
| Rôle | Portée | Capacités |
|---|---|---|
| Super Admin | Tout le réseau | Tout : plugins, thèmes, utilisateurs, sites |
| Administrateur | Un seul site | Gérer le contenu et les utilisateurs de son site uniquement |
| Éditeur | Un seul site | Publier et modérer le contenu |
Important : dans Multisite, les administrateurs de sites individuels ne peuvent PAS installer de plugins ou de thèmes. Seul le Super Admin le peut depuis l’administration réseau.
Plugins et thèmes réseau
- Activer par réseau : le plugin est automatiquement actif sur TOUS les sites — utilisez cela pour les plugins essentiels (sécurité, cache, SEO)
- Activer par site : chaque admin de site choisit d’activer ou non le plugin — utilisez cela pour les plugins optionnels
// Forcer l'activation de plugins essentiels sur tout le réseau
// Ajoutez dans mu-plugins/force-plugins.php
$forced_plugins = [
'wordfence/wordfence.php',
'wp-super-cache/wp-cache.php',
];
// Les mu-plugins sont chargés automatiquement avant les plugins normaux
4. Domaines personnalisés pour chaque site
Par défaut, les sous-sites utilisent votresite.com/sous-site. Pour utiliser des domaines propres (client1.com, client2.com) :
Avec le plugin WordPress MU Domain Mapping (gratuit)
- Installez et activez en réseau le plugin WordPress MU Domain Mapping
- Configurez le DNS de chaque domaine :
- Ajoutez un enregistrement A pointant vers l’IP de votre serveur
- Ou un CNAME pointant vers votre domaine principal
- Dans Administration réseau → Réglages → Domain Mapping, ajoutez le mappage
Sans plugin (WordPress 4.5+)
WordPress supporte nativement le domain mapping depuis la version 4.5. Modifiez simplement l’URL du site dans Administration réseau → Sites → Modifier.
# Configuration Apache pour les domaines multiples
<VirtualHost *:80>
ServerName votresite.com
ServerAlias *.votresite.com client1.com client2.com
DocumentRoot /var/www/wordpress
<Directory /var/www/wordpress>
AllowOverride All
</Directory>
</VirtualHost>
SSL avec Let’s Encrypt pour chaque domaine
# Générer un certificat SSL pour tous les domaines
sudo certbot --apache -d votresite.com -d www.votresite.com \
-d client1.com -d www.client1.com \
-d client2.com -d www.client2.com
5. Partage de contenu entre les sites
Requêtes cross-site avec switch_to_blog()
// Afficher les 5 derniers articles du site principal sur un sous-site
$original_blog = get_current_blog_id();
switch_to_blog(1); // ID du site principal
$recent = new WP_Query([
'posts_per_page' => 5,
'post_status' => 'publish',
]);
if ($recent->have_posts()) :
echo '<h3>Actualités du réseau</h3><ul>';
while ($recent->have_posts()) : $recent->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
endwhile;
echo '</ul>';
endif;
wp_reset_postdata();
restore_current_blog(); // Revenir au site en cours
Widget d’articles récents multi-sites
// Shortcode [articles_reseau sites="1,2,3" nombre="5"]
add_shortcode('articles_reseau', function($atts) {
$atts = shortcode_atts([
'sites' => '1',
'nombre' => 5,
], $atts);
$sites = explode(',', $atts['sites']);
$articles = [];
foreach ($sites as $blog_id) {
switch_to_blog(trim($blog_id));
$posts = get_posts([
'numberposts' => intval($atts['nombre']),
'post_status' => 'publish',
]);
foreach ($posts as $post) {
$articles[] = [
'title' => $post->post_title,
'url' => get_permalink($post->ID),
'date' => $post->post_date,
'site' => get_bloginfo('name'),
];
}
restore_current_blog();
}
// Trier par date décroissante
usort($articles, function($a, $b) {
return strtotime($b['date']) - strtotime($a['date']);
});
$articles = array_slice($articles, 0, intval($atts['nombre']));
$html = '<ul class="articles-reseau">';
foreach ($articles as $art) {
$html .= '<li><a href="' . esc_url($art['url']) . '">'
. esc_html($art['title']) . '</a>
<small>— ' . esc_html($art['site']) . '</small></li>';
}
$html .= '</ul>';
return $html;
});
6. Maintenance du réseau
Mises à jour centralisées
L’avantage principal de Multisite : une seule mise à jour de WordPress, de chaque plugin et de chaque thème s’applique à tout le réseau.
Administration réseau → Mises à jour → Mettre tout à jour
Surveillance avec WP-CLI
# Lister tous les sites du réseau
wp site list --fields=blog_id,url,registered
# Mettre à jour WordPress sur tout le réseau
wp core update
wp core update-db --network
# Mettre à jour tous les plugins
wp plugin update --all
# Vérifier l'état de chaque site
wp site list --field=url | while read url; do
echo "--- $url ---"
wp option get siteurl --url="$url"
wp plugin list --status=active --url="$url" --format=count
done
# Créer un nouveau site en ligne de commande
wp site create --slug=nouveau-site --title="Mon Nouveau Site" \
--email=admin@votresite.com
Sauvegarde Multisite
# Sauvegarder la base de données complète (tous les sites)
wp db export backup-reseau-$(date +%Y%m%d).sql
# Sauvegarder uniquement les tables d'un sous-site (ex: blog_id=2)
wp db export backup-site2.sql --tables=$(wp db tables --url=votresite.com/site2 --format=csv)
7. Performance Multisite
Cache objet (obligatoire)
Avec plusieurs sites, le cache objet (Redis ou Memcached) est indispensable :
// wp-config.php — activer le cache objet
define('WP_CACHE', true);
// Si vous utilisez Redis
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0); // Utiliser une base différente par réseau
Optimisation base de données
Multisite crée un jeu de tables par site (wp_2_posts, wp_3_posts, etc.). Avec 10 sites, vous avez ~120 tables. Optimisez régulièrement :
# Optimiser toutes les tables
wp db optimize
# Nettoyer les révisions sur tout le réseau
wp site list --field=url | while read url; do
wp post delete $(wp post list --post_type=revision --format=ids --url="$url") --url="$url" --force 2>/dev/null
done
8. Cas pratique : réseau d’agence web au Sénégal
Configuration type pour une agence gérant 5 clients :
| Site | URL | Thème | Plugins spécifiques |
|---|---|---|---|
| Site principal agence | agence.sn | Astra | Portfolio, Elementor |
| Client restaurant | agence.sn/resto-dakar | Flavor flavor flavor | Réservations |
| Client ONG | agence.sn/ong-education | flavor flavor | GiveWP |
| Client e-commerce | boutique-client.sn | flavor flavor flavor | WooCommerce, PayDunya |
| Client immobilier | agence.sn/immo-dakar | flavor flavor | CPT Biens |
Plugins activés en réseau : Wordfence, WP Super Cache, Rank Math SEO, UpdraftPlus, Complianz
Avantage économique : une seule licence Elementor Pro (Sites illimités : 399$/an) au lieu de 5 licences séparées. Même chose pour les autres plugins premium.
WordPress Multisite est un outil puissant pour centraliser la gestion de plusieurs sites. La clé du succès est de l’utiliser quand les sites partagent suffisamment de caractéristiques communes (plugins, thème, cible) pour justifier la complexité ajoutée de la gestion réseau.