Um zu verhindern, dass meine Besucher während der Wartung eine fehlerhafte Version meiner Website sehen, und um sie über die Updates auf dem Laufenden zu halten, möchte ich sie automatisch auf eine temporäre Wartungsseite umleiten. Ich bin auf der Suche nach einer portablen Lösung, die auf jeder Website verwendet werden kann, ohne dass URLs hartcodiert werden müssen.
Angemeldete Administratoren (oder andere Benutzer der Wahl) sollten vollen Zugriff auf das Back-End und das Front-End erhalten. Es gibt viele Plugins, die diese Funktionalität bieten, aber ich suche nach einer Nur-Code-Lösung.
maintenance
Neuer Benutzer
quelle
quelle
Antworten:
WordPress verfügt über eine eingebettete Funktion zur Verwaltung des Wartungsmodus.
Wenn Sie ein Plugin oder einen WordPress-Core vom WP-Dashboard aus aktualisieren, wechselt WordPress in den Wartungsmodus: Es wird versucht, eine Datei mit dem Namen
maintenance.php
im Inhaltsordner (normalerweise/wp-content
) zu laden. Wenn diese Datei nicht vorhanden ist, zeigt WP eine Standardnachricht an.Ich schlage vor, dass Sie diese Datei verwenden. Auf diese Weise sind Sie für Ihre manuell ausgelöste Wartung und für die von WordPress gehandhabte Wartung konsistent.
Wie man
Erstellen Sie zunächst die
maintenance.php
Datei und fügen Sie dort den gewünschten Inhalt ein. Zum Stylen schlage ich vor, dass Sie CSS mit<style>
tag in die Datei selbst einfügen. Im Allgemeinen ist dies kein guter Rat, aber in diesem Fall haben Sie die Möglichkeit, die Datei für den von WordPress gehandhabten Wartungsmodus zu verwenden, wenn kein Design geladen ist (und das Design möglicherweise aktualisiert wird, also nicht zuverlässig).Speichern Sie die soeben erstellte Datei (normalerweise
/wp-content
) im Inhaltsordner .In Ihrem
functions.php
Put:Dieser Code überprüft eine Konstante (siehe nächster Punkt). Wenn der Benutzer nicht angemeldet ist, laden Sie die an Punkt 1 erstellte Datei und beenden Sie sie.
Wenn Sie nur Benutzer mit bestimmten Funktionen zulassen möchten, verwenden Sie
current_user_can('capability_to_allow')
stattis_user_logged_in()
. Weitere Informationen finden Sie im Codex .Möglicherweise können Sie
maintenance.php
einen Link zur Anmeldeseite hinzufügen . Auf diese Weise kann ein nicht angemeldeter Benutzer darauf klicken, ohne die Anmelde-URL manuell in die Adressleiste eingeben zu müssen.Wenn Sie ein Thema verwenden, das von einem Drittanbieter entwickelt wurde, verwenden Sie ein untergeordnetes Thema . Auf diese Weise können Sie das Thema sicher aktualisieren, ohne Ihre Änderungen zu verlieren.
Wenn Sie den Wartungsmodus aktivieren möchten, öffnen Sie Ihren
wp_config.php
und geben Sie dort Folgendes ein:Wenn Sie dann bereit sind, Ihre Site wieder öffentlich zu machen, entfernen Sie einfach diese Zeile oder wechseln Sie
true
zu,false
um die erneute Aktivierung zu vereinfachen.quelle
define('WP_CONTENT_DIR','/url/to/define/');
in Ihrewp-config.php
Datei.Die vorherige Antwort ist vollständig und gut geschrieben. Wie auch immer, wenn Sie wie ich sind und alles an einem Ort haben möchten, können Sie die folgenden Zeilen in der
function.php
Datei ablegen und einemaintenance.php
Datei in Ihrem Themenverzeichnis erstellen .Dies ist besonders nützlich, wenn Ihr Git-Repository nur auf das Themenverzeichnis verweist.
ANMERKUNGEN
Ich habe den Header in geändert,
header('HTTP/1.1 503 Service Temporarily Unavailable');
da der oben genannte bei mir nicht funktioniert hat.quelle