Categorías: Tutoriales

Guardar y cargar datos en la tabla opciones de WordPress

Si usas WordPress como desarrollador sabrás que hay varias formas de almacenar datos sobre su base de datos sin necesidad de crear nuevas tablas. Hoy os voy a explicar una de ellas. Aparte de esta que voy a explicaros, existen básicamente dos más:

  • Para guardar tipos de datos (menos usuarios) y sus metadatos (o atributos)
  • Para guardar datos de usuarios y sus metadatos

Estructura

Esta en concreto usa la tabla opciones, wp_options o prefijo_options y para entender cómo usar las funciones y el objetivo de la misma, lo mejor es ver su forma. Esta tabla tiene la siguiente estructura:

  • option_id: su clave primaria
  • option_name: nombre de la opción
  • option_value: valor de la opción
  • option_autoload: indica si debe cargarse o no de primeras

Como veis, tenemos la estructura típica de las tablas hash: clave / valor con: option_name / option_value tan de moda ahora en bases de datos no relacionales y tan útiles.

Para qué sirve

A priori, la idea es: tengo un plugin o theme y quiero guardar un valor, por ejemplo, quiero guardar el color de fondo de los botones pues guardaría:

  • option_name: codection_color_fondo_botones
  • option_value: white

Sin embargo, gracias a la posibilidad de serializar datos, podemos meter arrays y listas en el valor, por lo que las posibilidades entonces crecen enormemente, en vez de guardar el color de fondo de los botones, podríamos guardar todas las opciones del tema:

  • option_name: codection_opciones_tema
  • option_value: array con opciones del tema

Cómo se usa

Tenemos las siguientes funciones, aunque hay más, me centro en las que suelo usar.

update_option($nombre_opción, $valor)

Tiene la enorme ventaja respecto a add_option de ser más flexible y valer tanto para guardar un dato como para actualizarlo. Si no existe lo crea automáticamente. El problema es que marcará autoload como verdadero y puede que no nos interese, por lo que habría que usar add_option que sí permite especificarlo (tienes aquí un ejemplo de cómo hacerlo).

Si valor es “sencillo”, lo guarda como tal, si es un array u objeto, lo guarda serializado (de forma transparente a nosotros).

Documentación y ejemplos en el enlace anterior que dirige a la página de la función en el Codex.

get_option($nombre_opción, $valor_por_defecto)

Recupera un valor por su nombre, si no lo encuentra, podemos pedirle que devuelva un valor por defecto. Si el dato es un array u objeto, automáticamente hará el proceso inverso a la serialización de forma transparente para nosotros.

Ejemplos, referencia completa y documentación como siempre en el Codex.

delete_option($nombre_opción)

Borra una opción de la base de datos por su nombre, útil para hacer uso de ella cuando desactivas un plugin o tema y no quieres dejar rastro. La referencia, aquí.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

Entradas recientes

Eclipse

7 días hace

Monitoriza tu consumo de Claude Code en GNOME con Python y AppIndicator

Si trabajas a diario con Claude Code, seguramente te haya pasado: estás a mitad de…

1 semana hace

No soy yo

2 semanas hace

Sin batería

3 semanas hace

432 CVEs

4 semanas hace

Anti-IA

1 mes hace