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üssel Bedeutung enabled Wartungsmodus aktiv allow_logged_in Alle eingeloggten Nutzer zusätzlich zu Administratoren durchlassen start_date,end_date Optionales Zeitfenster description Freitext, der auf der Wartungsseite erscheint page_id ID der automatisch erzeugten Wartungsseite exception_page_ids,exception_custom_paths Ausgenommene Seiten bzw. frei eingegebene Pfade
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.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.
Versionshistorie
Version Datum Änderung 1.0.0 22.09.2026 Einführung der Versionierung.