Cómo almacenar opciones con sintaxis a:n:{{}} en wp_options

6 ene 2011, 18:03:47
Vistas: 5.88K
Votos: 9

Estoy analizando cómo funciona un plugin en particular y noté que almacena sus datos para option_value en wp_options en este formato de array...

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";}}

Me gusta este método, ya que solo usa una sola fila para contener mis datos personalizados y la limpieza durante la desinstalación es sencilla. ¿Existe una forma estándar de realizar operaciones get/set en un campo personalizado que resulte en esta sintaxis?

Actualización: Gracias a Denis y a los demás que han respondido.

Aquí hay un excelente tutorial sobre este método en caso de que alguien más tenga esta pregunta > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

0
Todas las respuestas a la pregunta 3
5

Solo pasa un array cuando actualices tu opción. Se serializará automáticamente.

6 ene 2011 18:05:53
Comentarios

Gracias Denis. Aquí hay un excelente tutorial sobre este método en caso de que alguien más tenga esta pregunta > http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Scott B Scott B
6 ene 2011 18:36:33

Wow - No tenía idea. Seguía intentando serializarlos yo mismo.

Don Gilbert Don Gilbert
6 ene 2011 21:20:26

¿Este formato es específico de WordPress?

trusktr trusktr
28 may 2012 23:13:12

Nota: También puedes pasar un objeto (stdClass por ejemplo). Cuando uses get_option obtendrás exactamente el mismo objeto de vuelta :)

Brian Brian
19 mar 2015 21:32:41

@Brian: En realidad, no es stdClass por ejemplo. Es únicamente stdClass, de lo contrario WordPress fallará al cargar si la clase no existe, la opción está configurada para auto-cargarse y ningún auto-cargador de clases puede encontrar la clase apropiada.

Denis de Bernardy Denis de Bernardy
19 mar 2015 22:09:19
0

La serialización se realiza automáticamente, pero si deseas saber cómo hacer esto manualmente la función que debes revisar se llama serialize()

6 ene 2011 18:09:30
0

Según otras respuestas, la (des)serialización se realiza automáticamente en formatos de datos más complejos (arrays, objetos) cuando se almacenan o recuperan opciones. Esto también se aplica a transitorios y otras funcionalidades.

Técnicamente esto se realiza mediante el uso interno de las funciones maybe_serialize() y maybe_unserialize() que intentan determinar si los datos necesitan ser procesados o pasarse tal cual.

6 ene 2011 18:26:14