Wartungsseite für WordPress
Veröffentlicht in Wordpress am 13. März 2011 von Markus
2 Kommentare
Auf Facebook weitersagen
twittern
Nicht nur bei großen, viel besuchten WordPress Blogs, sondern auch bei kleinen Projekten sollte es zum guten Ton gehören, weder die eigenen Besucher noch die Suchmaschinen auf die Default-Wartungsseite von WordPress auflaufen zu lassen. Viel cleverer wäre es doch, die Seite kontrolliert in den Wartungsmdus zu fahren. Welche Möglichkeiten gibt es?
Grundsätzlich gibt es mehrere Gründe, warum WordPress in den Wartungsmodus geht oder gehen sollte. Ein Grund ist beispielsweise der Update-Prozess. Während WordPress die neuen Core-Files oder Plugin-Updates einspielt, wechselt das System in den Wartungsmodus und gibt eine nicht wirklich optimale Standard-Seite aus.
Eine andere Möglichkeit ist die selbst initiierte Wartung. In diesem Fall möchte man beispielsweise selbst etwas an einem Plugin oder an WordPress verändern und die Besucher nicht Zeuge der eigenen Bastelei werden lassen ![]()
Aber auch aus Online Marketing Sicht gibt es Gründe für eine saubere Wartungsseite. Stichwort Usability: So sollte man wie bereits erwähnt die eigenen Besucher informieren, was derzeit geschieht und ggf. auch eine alternative Kontaktmöglichkeit bieten. Aber auch aus SEO-Sicht macht es Sinn dem Crwawler einen geeigneten Header mitzugeben und ihm mitzuteilen, dass es sich bei dieser Aktion eben nur um einen vorübergehenden Zustand handelt.
Wartungsseite mit WordPress Plugin
Wer schnell eine Lösung braucht und dennoch Spielraum für individuelle Anpassungen möchte, dem sei das Plugin Maintenance Mode empfohlen. Nach der Installation lassen sich über das Backend zahlreiche Einstellungen vornehmen. Die Wartungsseite selbst lässt sich zudem über Templates an die eigenen Wünsche anpassen.
Wartungsseite ohne Plugin
Ich persönlich bevorzuge eine selbst gebaute Lösung, da ich grundsätzlich versuche ich die Anzahl der Plugins möglichst gering zu halten. Wie gehen wir vor?
Wartungsseite anlegen
Folgenden Beispielcode, angelehnt an das Snippet von Kevin Leary, speichert man in der “functions.php” die normalerweise im aktuellen Theme-Verzeichnis liegt.
Ziel des Templates ist es zunächst Einfluss auf den Inhalt der Wartungsseite zu haben, und den Benutzer entsprechend zu informieren. Dann aber auch den Suchmaschinen durch den Fehlercode 503 klar zu machen, das es sich nur um einen temporären Zustand handelt. Natürlich macht es keinen Sinn auch sich selbst als Seitenbetreiber in den Wartungsmodus einzuschließen, daher wird zu Beginn geporüft, ob der Nutzer eingelogt ist. Ist dies der Fall, wird die Funktion ignoriert.
function wartungsmodus() {
if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
$protocol = $_SERVER["SERVER_PROTOCOL"];
if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol ) $protocol = 'HTTP/1.0';
header( "$protocol 503 Service Unavailable", true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 600' );
echo ("<!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\">
<head>
<title>Wir führen Wartungsarbeiten durch und sind in Kürze wieder für Sie da!</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<style type=\"text/css\">
body {
font:14px/1.6em Arial;
background:#1a1a35;
}
#wrapper {
margin: auto;
overflow: hidden;
width: 600px;
}
#content {
color:#1c1c37;
-moz-border-radius:11px;
-khtml-border-radius:11px;
-webkit-border-radius:11px;
border-radius:5px;
background:#ededed;
padding:25px;
margin: 200px 0;
}
#content a {
color:#1c1c37;
}
#content p {
margin:0 0 1.2em;
}
#content p strong {
color:#1c1c37;
}
h1 {
margin: 0 0 .6em;
font-family:Arial;
color:#1a1a35;
}
</style>
</head>
<body>
<div id=\"wrapper\">
<div id=\"content\">
<h1>Wir überarbeiten die Seite für Sie.</h1>
<p>Unsere Seite wird aktuell für Sie aktualisiert und optimiert. Die Arbeiten werden voraussichtlich <strong>5 Minuten in Anspruch nehmen</strong>.</p>
<p>Wir entschuldigen uns für die Unannehmlichkeiten und werden bald mit den gewohnten Services wieder für Sie da sein.</p>
<p>Für Rückfragen erreichen Sie mich unter <a href=\"mailto:kontakt@avianex.de\">kontakt@avianex.de</a>.
</div>
</div>");
die();
}
}
add_action('get_header', 'wartungsmodus');
Wartungsseite manuell starten und beenden
Aktuell kann man den Wartungsmodus manuell durch (aus)kommentieren des Funktionsaufrufes anschalten oder aufheben:
Wartung an:
add_action('get_header', 'wartungsmodus');
Wartung aus:
//add_action('get_header', 'wartungsmodus');
Deutlich schöner wäre es natürlich den Wartungsmodus über die neue Admin-Toolbar per Mausklick zu (De)Aktivieren – Eine Idee wie man das möglichst einfach realisiert?
azella sagt am 22. April 2012 um 11:38 Uhr
Danke dir, die manuelle Lösung gefällt mir auch am besten. Da man die Wartungsseite ja nicht so oft benötigt ist das anschalten per functions.php ja vertretbar.
Grüße
azella
Markus sagt am 23. April 2012 um 08:09 Uhr
Gerne doch!