2012-04-04 1 views
0

Für alle Experten WP Theme Devs, wenn mehrere update_option() verwenden gibt es eine Möglichkeit, zu testen, wenn eines der Updates nicht funktionierte (ob durch Verbindungsfehler oder durch Validierung) und so wird einen Fehler werfen? Und wenn ein Fehler aufgetreten ist, können alle vorherigen update_option() Codes ignoriert werden?Test für Fehler in Wordpress `update_option()`

Danke Jungs!

Antwort

3

update_option() gibt false zurück, wenn die Aktualisierung aus irgendeinem Grund fehlschlägt. Es wird jedoch auch false zurückgegeben, wenn eine Option bereits auf den Wert gesetzt ist, für den Sie sie aktualisieren möchten.

Sie sollten also zuerst prüfen, ob die Option aktualisiert werden muss oder mit get_option vorhanden ist, und sie dann aktualisieren, wenn sie aktualisiert werden muss.

Wenn Ihre Option Ihren Validierungstest nicht besteht, brechen Sie einfach die Validierungsfunktion aus, die Sie verwenden. Du könntest einen Wp_Error werfen, aber das scheint zu invasiv. Ich neige dazu, den add_settings_error zu verwenden und den Benutzern so den Fehler anzuzeigen.

Um einen der vorherigen update_option-Aufrufe rückgängig zu machen, müssen Sie die vorherigen Werte in einem Array speichern, und wenn Sie dann iterieren, wenn Sie Ihre Optionen wiederherstellen müssen.

Im Allgemeinen verwende ich einen Optionstabelleneintrag, um Dinge wie Designoptionen oder Plugin-Optionen zu behandeln. Nichts Schlimmeres, als ein Thema zu bekommen, das meine Auswahltabelle mit einer neuen Option für jede Einstellung verschmutzt.

Edit:

Nachstehend ist, wie ich Optionen Validierung für mein Thema Optionen und Plugins Seiten behandeln. Seine Klasse basiert, so dass Sie einige der Vars austauschen müssen, wenn Sie einen prozeduralen Ansatz verwenden.

Um Einstellungsfehler in Ihren Themenoptionen anzuzeigen, fügen Sie die folgende Zeile hinzu, wo Sie Ihr Optionsformular generieren;

settings_errors($this->themename.'_theme_options'); 

Und ja, gibt es bereits die Optionen Tabelle. Was ich meinte, ist, dass Sie, anstatt einen neuen Eintrag in die Optionstabelle für jede Ihrer Themenoptionen zu generieren, diese alle in einen Optionseintrag einfügen. Dies erleichtert auch die Validierung der Optionsdaten.

+0

Ich habe gerade so viele Dinge mit Ihrem Kommentar gelernt. Dies ist das erste Mal, dass ich eine Seite mit Themenoptionen erstelle, sodass ich offen für alle anderen relevanten Informationen bin, die du mir in den Weg legen kannst. Stört es Sie zu erklären, was Sie in Ihrem letzten Absatz über eine Options-Tabelle erwähnt haben? Ist da nicht schon einer? – enchance

+0

Dies ist ein gutes Buch zum Verständnis der Einstellungen api http://codex.wordpress.org/Settings_API – noponies