Créateur de thèmes WordPress :: Formateur :: Web Designer

Créer un réseau de sites avec WordPress

Publié le : 

Modifié le : 

Par : 

Le réseau de site permet d’utiliser un seul site WordPress avec sa base de données pour générer autant de sous-sites que vous désirez. À grande échelle, c’est la configuration de WordPress.com. Pour les utilisateurs plus avancés, vous pourrez utiliser le plug-in WordPress MU Domain Mapping pour que chaque site ait sa propre adresse.

Attention, l’activation d’un réseau de sites suppose que vous ayez un serveur conséquent; un serveur virtualisé (VPS) ou un serveur dédié. Rien ne vous empêche de faire des tests sur un serveur mutualisé, mais sachez que cela peut être rapidement gourmand en ressource.

Activation du réseau

Il s’agit de rendre dans le fichier wp-config.php qui se trouve à la racine de votre site WordPress. C’est dans ce même fichier que vous déterminez:

  • le lien vers la base de données
  • la langue choisie pour votre site

Pour activer le réseau, il faut rentrer cette commande juste au-dessus de la ligne /* C’est tout, ne touchez pas à ce qui suit ! Bon blogging ! */, comme le code qui s’affiche ci-dessous.

/* Multisite */
define('WP_ALLOW_MULTISITE', true);

/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */

Rendez-vous dans le back office pour voir le nouveau menu apparaître.

Création du réseau

Après avoir installé la commande un nouveau menu apparaît dans votre back-office.

Lancement du réseau WordPress dans le back office

En cliquant sur ce lien Création du réseau, vous allez être redirigé vers une nouvelle page. Tous les extensions devront être désactivées. Il vous sera demandé deux choses, le Nom du réseau et l’Adresse de contact de l’administrateur. Ces deux éléments pourront être modifiés plus tard. Une fois les éléments ajoutés, vous pouvez cliquer sur Installer.

Nom du réseau WordPress et adresse email principale

La page se recharge. De nouveaux éléments apparaissent comme ci-dessous dans cette capture d’écran.

Options pour la création du réseau WordPress

1 Création du dossier sites

Ce dossier se trouve à la racine du dossier uploads. Il se crée automatiquement dès que vous avez plus d’un site pour stocker les médias des différents sous-sites.

2 Réglage du fichier wp-config.php

Vous allez copier/coller les lignes de code dans votre fichier wp-config.php en dessous de la ligne précédemment ajoutées au final cela donnera quelque chose qui ressemble à ça:

/* Multisite */
define('WP_ALLOW_MULTISITE', true);

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost');
define('PATH_CURRENT_SITE', '/www/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! *

En fonction de votre installation, vous pourrez activer la fonction subdomain et dans ces cas il faudra changer la ligne en:

define('SUBDOMAIN_INSTALL', true);

Avec true, vos sous-sites auront ce type d’url:
http://sous-site.site-principal.com
Avec false, ils auront:
http://www.site-principal.com/sous-site/

Dans les deux cas, vous pourrez utiliser l’extension WordPress MU Domain Mapping pour activer un nom de domaine différent pour chaque site.

3 Réglage du fichier .htaccess

Ce fichier .htaccess est un fichier masqué sur les serveurs de type Apache. Vous devez avoir un Client-serveur ou Client FTP qui vous permet de voir ce type de fichier. Des codes sont à copier/coller pour remplacer toutes les règles existantes de WordPress. À la première installation, WordPress nécessite des règles qui s’ajoutent automatiquement ou que vous devez ajouter manuellement.

Elle ressemble à ça avec # BEGIN WordPress au début et # END WordPress à la fin.

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /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]

</IfModule>

# END WordPress

Remplacer toutes ces règles par ces nouvelles qui vous sont données. Vous pourrez laisser les deux lignes qui commencent par #. Ce caractère sert à faire des commentaires dans les fichiers .htaccess. Une fois cette opération terminée, vous serez invité à vous reconnecter à votre back-office. Un nouveau menu apparaîtra dans la barre noire du haut.

Nouveau menu Réseau dans le tableau de bord WordPress

Ce menu donnera accès à tous les sites liés à votre compte ainsi que le tableau de bord réservé à l’administrateur du réseau. Pour y accéder, l’utilisateur devra avoir le rôle de Super Administrateur. Et si plusieurs sites sont associés à votre compte WordPress la liste s’affichera dans ce même menu.

Liste des sites dans le réseau de site WordPress

Supprimer « blog » des permaliens

Si vous êtes en mode sous répertoire, après l’activation du réseau, le mot « blog » apparaît dans les permaliens. Il est préférable de supprimer ce texte tout de suite avant de créer des nouveaux sites.

Vérifier la structure des permaliens

Dans le menu Réglages > Permaliens en le laissant sur Nom de l’Article. Ici, je vois que blog a été rajouté après l’activation du multisite.

Ajout de blog dans le permalien du réseau de site WordPress

Pour le modifier, je dois me rendre les réglages du réseau.

Accéder aux réglages du site

J’accède à tous les sites depuis mon nouveau menu. Mes sites > Sites. Chaque site peut avoir des réglages spécifiques quand on les édite.

Accéder aux réglages du site dans le réseau WordPress

Changer la structure des Permaliens

Une fois dans l’onglet Réglages, il faut chercher le champs Permalink Structure pour le modifier. De /blog/%postname%/ il deviendra /%postname%/. Voici une capture avant.

Permalien du réseau de site avec Blog

Et une capture après:

Permalien du réseau de site sans le Blog

Vérifier une dernière fois

Dans le back-office du site lui-même en enregistrant à nouveau, sans rien changer. Attention, mon site est en local dans un dossier www.

Dernière vérification du permalien dans votre site WordPress

Autres points à retenir

Utilisation du Wildcard

Pour avoir automatiquement les sous-domaines. Il s’agit dans vos DNS d’ajoute un enregistrement de type A avec comme valeur * qui pointe vers l’adresse IP de votre serveur.
Ensuite, attendre que les DNS se propagent.
Enfin voici un outil pour vérifier vos DNS y compris le Widlcard qu’il faut cocher. Une fois votre nom de domaine coché, il faut que toutes les adresses IP soient les mêmes, y compris celle avec login.votredomaine.com

Redirection infinie après la création

Attention au moment de l’instalation, WordPress peut vous proposez ce type de règles. Cela peux provoquer une erreur avec une redirection infinie.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>

Dans ce cas, remplacer par:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /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]
</IfModule>

Note sur certains hébergements

Comme sur OVH qui parfois pose problème. Merci Alexandre Bekliz pour le tuyau.

En effet, pour ceux dont l’hébergement ne permet pas le choix entre sous domaines et sous dossiers, ces petites lignes de code à insérer dans le functions.php du thème en cours permettent de résoudre le problème et ainsi d’avoir le choix à la création du réseau.
Cela peut aider en fonction de l’hébergement d’un client.

Dans ce cas, il est possible de personnaliser son installation (ici en sous-dossier) en ajoutant ces lignes dans le fichier function.php de votre thème

add_filter( 'allow_subdirectory_install', '__return_true' );

Le détail est donné dans ce tutoriel.

Liens et ressources