Comment stockez-vous les options avec une syntaxe: n: {{}} dans wp_options?

9

Je vérifie le fonctionnement d'un plugin particulier et j'ai remarqué qu'il stocke ses données pour option_value dans wp_options dans ce format de tableau ...

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

J'aime cette méthode, car elle n'utilise qu'une seule ligne pour contenir mes données personnalisées, le nettoyage de désinstallation est facile. Existe-t-il un moyen standard d'effectuer une opération get / set sur un champ personnalisé qui aboutit à cette syntaxe?

Mise à jour: Merci à Denis et aux autres qui ont ajouté des réponses.

Voici un excellent tutoriel sur cette méthode au cas où quelqu'un d'autre aurait cette question> http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Scott B
la source

Réponses:

8

Passez simplement un tableau lors de la mise à jour de votre option. Il sera sérialisé automatiquement.

Denis de Bernardy
la source
Merci Denis. Voici un excellent tutoriel sur cette méthode au cas où quelqu'un d'autre aurait cette question> striderweb.com/nerdaphernalia/2008/07/…
Scott B
Wow - Je n'en avais aucune idée. J'ai continué à essayer de les sérialiser moi-même.
Don Gilbert
Ce format est-il spécifique à WordPress?
trusktr
Remarque: Vous pouvez également passer un objet (stdClass par exemple). Lorsque vous utilisez get_option, vous récupérez l'objet exact :)
Brian
@Brian: En fait, ce n'est pas stdClass par exemple. Ce n'est que stdClass, sinon WP plantera à la charge si la classe n'existe pas, l'option est définie sur autoload et aucun autoloader de classe ne peut trouver la classe appropriée.
Denis de Bernardy
3

La sérialisation se fait automatiquement, mais si vous voulez savoir comment le faire manuellement, la fonction à regarder s'appelle serialize ()

éditeur
la source
2

Selon les autres réponses, la (dé) sérialisation est effectuée automatiquement sur des formats de données plus complexes (tableaux, objets) lorsque les options sont stockées ou récupérées. Cela s'applique également aux transitoires et autres fonctionnalités.

Techniquement, cela est effectué par une utilisation interne maybe_serialize()et des maybe_unserialize()fonctions qui tentent de déterminer si les données doivent être traitées ou transmises telles quelles.

Rarst
la source