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/

Réponses:


8

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


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 ()


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.