WordPress est un outil très puissant pour héberger un blog… ou plutôt devrais-je dire “des blogs”, car une instance de WordPress est capable de gérer plusieurs blogs différents mais avec l’avantage d’avoir les même thèmes ou extensions (activables et réglables par site). Il est relativement aisé de transformer une installation normale WordPress en installation WordPress MultiSite : c’est très bien expliqué sur le codex.
Il demeure toutefois un problème : les pages d’inscriptions des blogs “enfants” (les blogs constituant le réseau WordPress créé) redirigent forcément vers la page d’inscription du blog principal. Et il en est de même pour le lien “Mot de passe oublié”.
Cet article va vous expliquer comment forcer WordPress à utiliser une page d’inscription et une page d’oubli de mot de passe spécifique pour chaque blog enfant.
ATTENTION : il convient de noter que nous allons modifier directement les fichiers sources de WordPress, car il n’existe pas, à ma connaissance, de plugin pour gérer cela. Ce qui sous-entend qu’à chaque mise à jour de WordPress, il faudra ré-appliquer ces modifications sur votre installation de WordPress.
Page d’inscription
La page d’inscription de vos blogs WordPress est gérée par le fichier wp-login.php dans la racine de votre installation WordPress. Pour le modifier, rendez-vous dans ce répertoire et créez un petit fichier temporaire nommé par exemple patch-wp-login.patch.
Mettez-y le contenu suivant :
516,520c516,520 < if ( is_multisite() ) { < // Multisite uses wp-signup.php < wp_redirect( apply_filters( 'wp_signup_location', network_site_url('wp-signup.php') ) ); < exit; < } --- > // if ( is_multisite() ) { > // // Multisite uses wp-signup.php > // wp_redirect( apply_filters( 'wp_signup_location', network_site_url('wp-signup.php') ) ); > // exit; > // }
Ce fichier est un fichier patch/diff. Il suffit de l’appliquer à votre fichier wp-login.php pour effectuer la mise à jour, en tapant les lignes suivantes :
patch wp-login.php patch-wp-login.patch
Page mot de passe oublié
Le lien vers la page d’oubli de mot de passe est dans un autre fichier présent dans le répertoire wp-includes : general-template.php. Donc rendez-vous dans ce répertoire et créez le fichier patch-wp-lost.patch avec ceci à l’intérieur :
319c319,320 < $lostpassword_url = add_query_arg( $args, network_site_url('wp-login.php', 'login') ); --- > // $lostpassword_url = add_query_arg( $args, network_site_url('wp-login.php', 'login') ); > $lostpassword_url = add_query_arg( $args, site_url('wp-login.php', 'login') );
Pour appliquer ce fichier patch/diff au code de WordPress, il vous suffit de taper :
patch general-template.php patch-wp-lost.patch
Voilà, c’est tout. Une fois ces deux modifications effectuées, cela devrait être immédiatement visible sur vos blogs, sauf si vous avez installé quelque chose qui gère du cache (plugin TotalCache, cache nginx/varnish, …) : dans ce cas là, pensez à vider le cache.
Dernière petite précision : ces patchs sont fonctionnels sur la version 3.5.2, donc pensez à mettre à jour votre WordPress au préalable. Il est très important de maintenir toujours à jour son installation WordPress car c’est une plateforme privilégiée pour les pirates.