fob marketing

WordPress 2.2.1 im Wartungsmodus

Ich arbeite gerade an einem WordPress-Blog für Do it Sprachreisen, der nächste Woche in Betrieb genommen werden soll. Weil der Sprachreisenblog sich aus verschiedenen Gründen verzögert hat, wurde zwischenzeitlich eine WordPress-2.2.1-Aktualisierung aufgespielt.

Nun habe ich meiner Sprachreise-Kundin versprochen, dass wir den Blog „unsichtbar“ machen, während wir daran arbeiten, so dass der eine oder andere Mitarbeiter auch schon mal ein bisschen in das Blog-System hinein schnuppern kann, ohne dabei von der Öffentlichkeit beobachtet zu werden… und stelle entsetzt fest, dass mit WordPress 2.2.1 plötzlich kein Wartungsmodus-Plugin mehr funktioniert – weder das Wartungsmodus-Plugin von Michael Wöhrer, noch die Unavailable-for-Maintenance-Alternative von Simple Thoughts.

Dies machte mich dann mal wieder selbst „temporarily unavailable“. Shit happens! 😉

Weil ich mit dem Wartungsmodus-Plugin von von Michael stets gerne gearbeitet habe, suchte ich den Bug erst einmal dort. Wie sich herausstellte, liefert die Variable $userdata in der aktuellen WordPress-Version scheinbar keinen „User Level“ mehr. Dies mag mit der WordPress-Umstellung auf „User Roles“ (WP_Roles) zusammenhängen…

Um kurzfristig ein neues Wartungsmodus-Plugin zu bekommen habe ich die User-Level-Überprüfung einfach durch eine User-ID-Prüfung ersetzt. Dies bedeutet: Wer (noch) nicht registriert ist, darf so lange nichts sehen, bis der Wartungsmodus wieder deaktiviert wird. Und das geht so:

Man suche in der Datei „maintanance_mode.php“ den Abschnitt:

/*

global $userdata
get_currentuserinfo();

if ( intval($userdata->user_level) >= $mw_maintenance_opt['mwmm_minuserlevel'] ) {
return true;

} else {
return false;

*/

und ersetze diesen durch:


global $user_ID;
get_currentuserinfo();

if ( $user_ID == '' || $user_ID == '0' ) {
return false;

} else {
return true;

Nun sehen alle Besucher die Wartungsmodus-Mitteilung, außer denen, die bereits registriert sind. Auf die gleiche Art könnte man den Admin-Modus natürlich auch für bestimmte, dedizierte User aktivieren und andere ausschließen.

Bevor man, wie ich es getan habe, den halben Tag herum experimentiert, um schließlich herauszufinden, dass LEDIGLICH FÜR DEN ADMIN KEIN USER_LEVEL GELADEN WIRD – ich sagte es ja schon, „shit happens“ – kann man natürlich auch einfach in die Benutzerverwaltung von WordPress gehen, einen neuen User mit Adminrechten anlegen und mit diesem dann den Wartungsmodus testen. 😉

Weil es solche Probleme nach dem WordPress-2.2.1-Upgrade auf fob-marketing.de nicht gegeben hat, nehme ich mal an, dass der Bug nur bei WordPress 2.2-Neu-Installationen auftaucht.

Update: Während ich gestern über mein Wartungsmodusproblem berichtetete, hat Michael Wöhrer scheinbar gerade sein Mainenance-Mode-Update fertiggestellt. In der Version 3.0 gibt es ein paar Vereinfachungen, Role-Manager-Support und einen Warnhinweis im Admin, damit man nicht vergisst, den Wartungsmodus wieder abzuschalten. Dank Role-and-Capabilities-Support werden nun auch User ohne explizit in der Datenbank hinterlegtem User-Level als Administratoren erkannt. Ein Fall Back in die alten WordPress-Routinen ist nicht mehr nötig.

Wollte Michael sich aus der Plugin-Ecke nicht zurückziehen? Egal. Tolles Update! Einziger Haken: Wer seine Wartungsmodustexte modifiziert hatte, wird diese nach dem Update noch einmal neu einstellen müssen. Ist für viele wahrscheinlich halb so schlimm. Bei längeren Texten sollte man sich diese vor dem Update speichern.

Die mobile Version verlassen