WordPress : Mode maintenance sans plugin

Article mis à jour le 19 août 2018.

L’idée aujourd’hui c’est de partager un peu mon expérience en vous livrant quelques morceaux de code afin de mettre en place un mode maintenance. Je fais partie de ceux qui aiment WordPress dans son plus simple appareil, à savoir léger sans ses 50 extensions trouvées sur topito. Bienvenue chez les puristes ?

Je pars du principe que vous savez tous coder à minima, que vous maîtriser votre environnement, les fonctions, les hooks, les actions… Au pire, vous pouvez copier coller les lignes de code dans le fichier indiqué, ça restera entre nous.

By the way, l’image à la une n’a absolument aucun rapport avec notre mini intervention, je l’ai simplement trouvé stylée.

 

Création de la fonction

Tout se passe dans le fichier functions.php que vous trouverez à la racine de votre thème. Il n’y aura qu’une seule étape.

Dans l’ordre :

  1. On vérifie si l’utilisateur est connecté et s’il a les droits administrateurs (de manière à ce qu’un abonné simple ne puisse accéder à votre site pendant sa période maintenance)
  2. On lui affiche le site s’il rempli nos deux conditions ou bien, on lui laisse un petit mot doux.
  3. On indique à WordPress qu’il doit executer la fonction à l’appel du header par exemple.

// Fonction Mode maintenance
function mode_maintenance() {
if( !is_user_logged_in() || !current_user_can('administrator')) {
die('Notre site est actuellement en maintenance.');
}
}
add_action('get_header', 'mode_maintenance');

On obtient alors quelque chose comme ceci :

Si vous êtes connectés, votre site s’affichera. Le wp-admin demeure bien sûr toujours accessible !

 

Fonction WP DIE pour un peu de mise en forme

En remplaçant la fonction simple die par wp_die on peut bénéficier de la mise en forme wordpress, soit une solution encore plus efficace si vous ne souhaitez pas perdre de temps dans de la mise en page.

// Fonction Mode maintenance avec WP DIE par brunoantunes.fr
function mode_maintenance() {
if( !is_user_logged_in() || !current_user_can('administrator')) {
wp_die('<h1 style="color:#FF675B">Louiseemoi fait peau neuve</h1><br />Nous effectuons des mises à jour sur notre site internet afin de rendre meilleur son expérience, on revient très vite !');
}
}
add_action('get_header', 'mode_maintenance');

Ce qui donne quelque chose comme suit :