Wie speichere ich Optionen mit der Syntax: n: {{}} in wp_options?

8

Ich überprüfe, wie ein bestimmtes Plugin funktioniert und stelle fest, dass es seine Daten für option_value in wp_options in diesem Array-Format speichert ...

a: 2: {i: 20; a: 2: {s: 8: "original"; s: 15: "20.original.jpg"; s: 9: "thumbnail"; s: 12: "20.thumb .jpg ";} i: 8; a: 2: {s: 8:" original "; s: 14:" 8.original.png "; s: 9:" thumbnail "; s: 11:" 8.thumb .png ";}}

Ich mag diese Methode, da nur eine einzige Zeile zum Speichern meiner benutzerdefinierten Daten verwendet wird. Die Deinstallation ist einfach. Gibt es eine Standardmethode zum Ausführen einer Get / Set-Operation für ein benutzerdefiniertes Feld, die zu dieser Syntax führt?

Update: Vielen Dank an Denis und die anderen, die Antworten hinzugefügt haben.

Hier ist ein hervorragendes Tutorial zu dieser Methode, falls jemand anderes diese Frage hat> http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Scott B.
quelle

Antworten:

8

Übergeben Sie einfach ein Array, wenn Sie Ihre Option aktualisieren. Es wird automatisch serialisiert.

Denis de Bernardy
quelle
Danke Denis. Hier ist ein ausgezeichnetes Tutorial zu dieser Methode, falls jemand anderes diese Frage hat> striderweb.com/nerdaphernalia/2008/07/…
Scott B
Wow - hatte keine Ahnung. Ich habe immer wieder versucht, sie selbst zu serialisieren.
Don Gilbert
Ist dieses Format spezifisch für WordPress?
Trusktr
Hinweis: Sie können auch ein Objekt übergeben (z. B. stdClass). Wenn Sie get_option verwenden, erhalten Sie das genaue Objekt zurück :)
Brian
@Brian: Eigentlich ist es zum Beispiel keine stdClass. Es ist nur stdClass, sonst stürzt WP beim Laden ab, wenn die Klasse nicht vorhanden ist, die Option auf Autoload gesetzt ist und kein Klassen-Autoloader die entsprechende Klasse finden kann.
Denis de Bernardy
3

Die Serialisierung erfolgt automatisch. Wenn Sie jedoch wissen möchten, wie dies manuell durchgeführt wird, heißt die zu betrachtende Funktion serialize ().

Editor
quelle
2

Gemäß anderen Antworten wird die (Un-) Serialisierung automatisch für komplexere Datenformate (Arrays, Objekte) durchgeführt, wenn Optionen gespeichert oder abgerufen werden. Dies gilt auch für Transienten und andere Funktionen.

Technisch wird dies durch interne Verwendung maybe_serialize()und maybe_unserialize()Funktionen durchgeführt, die versuchen festzustellen, ob Daten unverändert verarbeitet oder übergeben werden müssen.

Selten
quelle