Pour empêcher mes visiteurs de voir une version cassée de mon site pendant la maintenance, et pour les informer des mises à jour, je souhaite les rediriger automatiquement vers une page de maintenance temporaire. Je recherche une solution portable utilisable sur n'importe quel site, sans URL de codage en dur.
Les administrateurs connectés (ou tout autre niveau d'utilisateur de choix) doivent avoir un accès complet au back-end et au front-end. Il existe de nombreux plugins qui offrent cette fonctionnalité, mais je recherche une solution uniquement en code.
maintenance
Nouvel utilisateur
la source
la source
Réponses:
WordPress a une fonctionnalité intégrée pour gérer le mode de maintenance.
Lorsque vous mettez à niveau un plugin ou un noyau WordPress à partir du tableau de bord WP, WordPress passe en mode maintenance: il essaie de charger un fichier nommé
maintenance.php
situé dans le dossier de contenu (généralement/wp-content
), et si ce fichier n'est pas là, WP affiche un message par défaut.Je vous suggère d'utiliser ce fichier, de cette manière, vous serez cohérent pour votre maintenance déclenchée manuellement et pour la maintenance gérée par WordPress.
Comment
Créez d'abord le
maintenance.php
fichier et mettez-y le contenu que vous souhaitez. Pour le style, je vous suggère de mettre CSS dans le fichier lui-même, en utilisant<style>
tag; généralement ce n'est pas un bon conseil, mais dans ce cas, il vous donne la possibilité d'utiliser le fichier pour le mode de maintenance géré par WordPress, quand aucun thème n'est chargé (et le thème peut être mis à niveau, donc pas fiable).Enregistrez le fichier que vous venez de créer dans le dossier de contenu (généralement
/wp-content
).Dans votre
functions.php
position:Ce code vérifiera une constante (voir le point suivant) et si l'utilisateur n'est pas connecté, chargez le fichier créé au point # 1 et quittez.
Si vous souhaitez autoriser uniquement les utilisateurs dotés de capacités spécifiques, utilisez
current_user_can('capability_to_allow')
plutôt queis_user_logged_in()
. Voir Codex pour plus d'informations.Vous pouvez peut-être ajouter
maintenance.php
un lien vers la page de connexion; de cette façon, un utilisateur non connecté peut cliquer dessus sans avoir à saisir manuellement l'URL de connexion dans la barre d'adresse.Si vous utilisez un thème développé par un tiers, utilisez un thème enfant ; de cette façon, vous pourrez mettre à jour le thème en toute sécurité sans perdre vos modifications.
Lorsque vous souhaitez activer le mode maintenance, ouvrez votre
wp_config.php
et mettez-le:Après cela, lorsque vous êtes prêt à rendre votre site à nouveau public, supprimez simplement cette ligne ou passez
true
àfalse
pour une réactivation plus facile.la source
define('WP_CONTENT_DIR','/url/to/define/');
votrewp-config.php
fichier.La réponse précédente est complète et bien écrite. Quoi qu'il en soit, si vous êtes comme moi et que vous souhaitez tout avoir en un seul endroit, vous pouvez déposer les lignes suivantes dans le
function.php
fichier et créer unmaintenance.php
fichier dans votre répertoire de thèmes.Cela est particulièrement utile si votre référentiel Git pointe uniquement vers le répertoire du thème.
REMARQUES
J'ai changé l'en-tête
header('HTTP/1.1 503 Service Temporarily Unavailable');
car celui ci-dessus ne fonctionnait pas pour moi.la source