senäh

17senäh und so…

Wordpress Logo

WordPress
31. Okt 2011
Kommentare: 2

WordPress: was tun, wenn update_option nicht funktioniert

Kategorien: WordPress | 31. Okt 2011 | Kommentare: 2

Vor ein paar Monaten habe ich mein erstes richtiges Plugin für WordPress entwickelt. Es ging dabei um ein Studienprojekt. Dabei bin ich auf ein äußerst frustrierendes Phänomen gestoßen.

Ein WordPress-Plugin kann Optionen, die für die Funktionalität nötig sind, über die Funktion update_option verwalten. Die Anwendung ist denkbar einfach, lediglich der Optionsname und der entsprechende Wert müssen angegeben werden.

update_option('meineCooleOption', 'mörderKrasserWert');

Die Funktion überprüft dann, ob eine Option mit dem angegebenen Namen existiert. Tut sie das, wird der alte Wert überschrieben. Sollte die Option noch nicht existieren, wird sie intial gespeichert.

So weit, so trivial. (Sorry, aber das wollte ich immer schon mal schreiben.)

Was aber, wenn update_option den Dienst verweigert?

Ich weiß bis heute nicht woran es liegt, aber unter bestimmten Umständen scheint das Aktualisieren einer Option auf diese Art und Weise nicht zu funktionieren.

In einem Skript habe zuerst via update_option eine Option aktualisiert, um sie später via get_option auszulesen. Egal, wie ich es in welcher Reihenfolge probiert habe – ich habe immer nur den alten Wert auslesen können. Zwar stand der aktualisierte Wert am Ende der Skriptausführung immer in der Datenbank, zur Laufzeit auslesen konnte ich ihn aber nicht.

Ich vermute dahinter irgendeine Auto-Loading oder Caching-Routine seitens WordPress. Allerdings habe ich keine edle Lösung gefunden. Der einzige Workaround sieht so aus: statt update_option einfach delete_option und add_option verwenden.

Trvialer (da ist dieses Wort schon wieder) Hinweis, der dem ein oder anderen hoffentlich ein wenig Suche erspart.

Autor: Enno

Ich bin Enno. PHP ist mein Ding, aber auch alles Neue rund um die Themen HTML5, CSS3 & Co finde ich interessant. Ich mag es Leuten zu helfen und mein Wissen weiterzugeben. Sollte dir mein Beitrag gefallen haben, lass doch nen Kommentar da oder benutze einen der Social Buttons, um deinen Dank auszudrücken ;)