WordPress Maintenance-Mode
Es gibt viele Möglichkeiten den Maintenance-Modus in WordPress zu aktivieren. So kann beispielsweise ein Plugin installiert werden, das schon einige Funktionen enthält. Grundsätzlich versuchen wir jedoch die Anzahl der Plugins aus Sicherheitsgründen gering zu halten. Zudem gibt es bei Updates häufig Probleme mit Plugins, da nicht alle Hersteller auf neue WordPress Versionen upgraden. Daher stellen wir dir eine kleine Funktion für den Maintenance-Modus vor. Der Vorteil unserer Lösung ist, dass Admins parallel im WordPress Backend & Frontend arbeiten können, während für Frontend-User die Wartungsseite erscheint.

Funktion für die Aktivierung des maintenance Modus

Die if Abfrage sorgt dafür, dass User mit bestimmten Rechten ausgenommen werden und die Seite bearbeiten und ansehen können. Über den maintenance Pfad kann eine PHP Datei angegeben werden. So kann eine individuelle Wartungsseite gestaltet und bereit gestellt werden.
function wp_maintenance_mode() {
	if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
		$domain = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
		$maintenance_path = 'maintenance.php';
		if( file_exists( $domain . $maintenance_path ) )
			wp_redirect( $maintenance_path, 302 );
	}
}
add_action('get_header', 'wp_maintenance_mode');

Updatesichere Einbindung der Funktion in die functions.php & Server-Konfiguration

Diese Funktion wird in der functions.php im Template eingebunden. Zudem wird eine maintenance.php Datei im Root-Verzeichnis benötigt, die den Code für die Wartungsseite enthält.
Optional kann in der Apache- oder Nginx-Konfiguration des Projekts die maintenance.php neben der index.php und index.html als Standard angegeben werden, falls WordPress nicht funktionieren sollte, oder noch nicht installiert ist. Durch das „Auskommentieren“ mit einem Unterstrich („_maintenance.php“) kann der Wartungsmodus einfach abgeschaltet werden.
Der Vorteil gegenüber eines maintenance-Flags ist, dass sich ein Administrator einloggen und die Seite wie gewohnt bearbeiten kann, ohne auf die Wartungsseite zu stoßen.

Vorsicht: Es wird empfohlen diesen Code in die functions.php eines Child-Themes oder eines eigenen, individuellen Templates zu hinterlegen. Andernfalls kann es sein, dass bei einem Update des Templates dieser Code überschrieben wird.