maintenance-mode


Wartungsmodus


Das Maintenance-Mode-Modul versetzt eine Subsite in den Wartungsmodus. Besucher werden auf eine automatisch erstellte, konfigurierbare Wartungsseite weitergeleitet – Administratoren sehen standardmäßig weiterhin die normale Seite und können ungestört weiterarbeiten.

Allgemein

Zeitplan


Der Wartungsmodus kann mit einem optionalen Start- und Endzeitpunkt versehen werden. Vor dem Start bleibt die Seite trotz aktivierter Checkbox normal erreichbar, nach dem Endzeitpunkt schaltet sich der Wartungsmodus beim nächsten Seitenaufruf automatisch selbst wieder aus.

Ausnahmen


Bestimmte WordPress-Seiten (per Checkliste) oder frei eingegebene Pfade können vom Wartungsmodus ausgenommen werden – z. B. eine Kontaktseite oder ein Webhook-Endpunkt, der weiterhin erreichbar bleiben muss. Zusätzlich lässt sich per Checkbox erlauben, dass alle eingeloggten Nutzer die Seite normal sehen (nicht nur Administratoren, die ohnehin immer durchgelassen werden).

Vorschau & Test


Ein spezieller Vorschau-Link (?weinhold_maintenance_preview=1) erzwingt den Wartungsmodus nur für den eigenen Aufruf, ohne ihn für alle anderen Besucher zu aktivieren – zum schnellen Gegencheck der Wartungsseite.

Konfiguration


Alles wird im Dashboard unter Weinhold → Maintenance Mode konfiguriert. Kein Shortcode nötig – das Modul arbeitet vollständig automatisch.

Dateien

modules/maintenance_mode.php – einzige Datei des Moduls: Einstellungen, Wartungsseiten-Erzeugung/-Pflege, Weiterleitungslogik, Admin-Oberfläche, Cleanup.

Für Entwickler

Wartungsseite als echte WordPress-Seite


Bei der ersten Aktivierung wird automatisch eine normale WordPress-Seite mit dem Slug maintenance-mode angelegt (weinhold_create_maintenance_page()), deren Inhalt aus den konfigurierten Zeitfenster- und Beschreibungstexten zusammengesetzt wird. Bei jeder Einstellungsänderung wird ihr Inhalt aktualisiert (weinhold_update_maintenance_page()). Beim Deaktivieren wird die Seite bewusst NICHT gelöscht, sondern bleibt erhalten (eigener Löschen-Button in der Admin-Oberfläche für den expliziten Fall).

Ablauf


Hängt an template_redirect. Reihenfolge: Ist das Endzeitfenster bereits erreicht, wird der Wartungsmodus automatisch deaktiviert und die Funktion bricht ab. Dann werden Systempfade (Admin, AJAX, REST, XML-RPC, Cron sowie fest ausgenommene technische Pfade wie wp-login.php, wp-json, robots.txt) immer durchgelassen. Danach greift die Admin-Ausnahme, die allow_logged_in-Ausnahme und zuletzt die konfigurierten Ausnahmepfade. Bleibt keine Ausnahme übrig, liefert die Wartungsseite selbst HTTP 503 mit Retry-After-Header, alle anderen URLs werden per 302 dorthin weitergeleitet.

Einstellungen (Option weinhold_maintenance_mode_settings)


SchlüsselBedeutung
enabledWartungsmodus aktiv
allow_logged_inAlle eingeloggten Nutzer zusätzlich zu Administratoren durchlassen
start_date,end_dateOptionales Zeitfenster
descriptionFreitext, der auf der Wartungsseite erscheint
page_idID der automatisch erzeugten Wartungsseite
exception_page_ids,exception_custom_pathsAusgenommene Seiten bzw. frei eingegebene Pfade

Besonderheiten

Weder IP-basierte noch rollenbasierte Ausnahmen vorhanden – Bypass funktioniert ausschließlich über Administratorrechte, die allow_logged_in-Option (alle eingeloggten Nutzer pauschal) und Pfad-Ausnahmen. Eine feingranulare Steuerung nach Rolle oder IP-Adresse gibt es nicht.

HTTP-Statuscode ist korrekt 503 (nicht 200 oder 302) mit Retry-After-Header, wenn die Wartungsseite direkt aufgerufen wird – wichtig für Suchmaschinen, damit die Seite währenddessen nicht aus dem Index fällt. Bei allen anderen URLs erfolgt dagegen ein 302-Redirect zur Wartungsseite.

Das andere 404-Weiterleitungs- und das Login-Redirect-Modul prüfen jeweils selbst, ob der Wartungsmodus aktiv ist, und greifen dann nicht ein – die Module sind bewusst so verzahnt, dass Wartungsmodus stets Vorrang hat.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.