WordPress Wartung: Verwaltungsbereich sperren

Für WordPress existieren einige “Maintenance Mode”-Plugins, welche die komplette Seite sperren.

Oft möchte man während einer Wartung allerdings nur Änderungen an der Datenbank verhindern während die Seite für Besucher weiterhin angezeigt werden soll.

Der Artikel WordPress Maintenance Mode Without a Plugin Part 3 beschreibt den umgekehrten Ansatz – das Backend bleibt aktiv während Frontend Zugriffe verboten werden.

Dieser Ansatz muss also nur noch entsprechend angepasst werden, sodass lediglich das Backend gesperrt wird, während Frontend-Zugriffe weiterhin funktionieren.

WordPress Login Sperre einrichten

Dazu erstellt man im WordPress Hauptverzeichnis die Datei .maintenance mit folgendem Inhalt:

<?php
if ( stristr($_SERVER['REQUEST_URI'], '/wp-admin') || stristr($_SERVER['REQUEST_URI'], '/wp-login.php') )
	$upgrading = time();
?>

Möchte man die Meldung noch aussagekräftiger gestalten, kann man die Datei wp-content/maintenance.php erstellen. Beispielinhalt:

<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="de-DE">

	<?php $heading = 'Wartungsarbeiten - Maintenance' ?>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<link rel='stylesheet' id='login-css'  href='/wp-admin/css/login.css' type='text/css' media='all' />
		<link rel='stylesheet' id='colors-fresh-css'  href='/wp-admin/css/colors-fresh.css' type='text/css' media='all' />
		<title><?php echo $heading; ?></title>
	</head>

	<body>
		<div style="margin:0px auto; max-width:960px;" >
			<h1><?php echo $heading; ?></h1>
			<br/>
			<h2><em>DEUTSCH:</em> Administrationsbereich tempor&auml;r gesperrt</h2>
			<p>Aufgrund von Wartungsarbeiten d&uuml;rfen derzeit keine &Auml;nderungen vorgenommen werden. Daher ist der Zugang zur WordPress Verwaltungsoberfl&auml;che gesperrt.</p>
			<br/>
			<h2><em>ENGLISH:</em> Admin-Interface temporarly locked</h2>
			<p>Due to scheduled maintenance changes are currently disallowed. Thus login to the WordPress backend is denied. </p>
		</div>
	</body>

</html>

Das Beispiel bindet die gleichen CSS Dateien ein, wie das WordPress Anmeldeformular und sorgt somit für die Verwendung der bekannten Schriftart.

Es kann natürlich beliebig optimiert werden. Einge Möglichkeit wäre die Sprache je nach Locale des Besuchers zu setzen.