En WordPress disponemos de una tabla en la base de datos llamada wp_options en la que podemos almacenar un par nombre/valor de una variable de forma indefinida. Esta información podrá ser accedida, actualizada o borrada, y para ello no hace falta escribir ni una sola línea de SQL. WordPress dispone de una API para realizar todas estas operaciones de una forma muy sencilla e intuitiva. Al par nombre/valor que almacenamos en la base de datos de WordPress se le llama opción (option) y las funciones con las que podemos tratar esas opciones son add_option, get_option, update_option y delete_option.
Añadir un valor
Para añadir un valor a la base de datos, utilizaremos la función add_option(), que puede tener 4 parámetros:
- $nombre: nombre de la opción que almacenamos. Este parámetro es obligatorio y por defecto está vacío.
- $valor: valor de la opción. Es un parámetro opcional y por defecto está vacío.
- $descripción: este parámetro no se usa desde la versión 2.3 de WordPress. Si se necesita usar el siguiente parámetro, hay que pasar una cadena vacía o null.
- $autocargar: indica si la opción debe ser almacenada en el objeto caché automáticamente por la función wp_load_alloptions. Es opcional y por defecto es sí.
Vamos a ver con un ejemplo cómo podríamos almacenar en la base de datos de WordPress un saludo que se mostrará cada vez que carguemos una página.
add_option('saludo', 'Bienvenido a mi blog!'); |
Si quisiéramos que esta opción no se cargara en caché automáticamente, necesitamos usar el último parámetro:
add_option('saludo', 'Bienvenido a mi blog!', '', 'no'); |
Como vemos, el tercer argumento es la cadena vacía, ya que ese parámetro ya no se usa.
Acceder al valor de una opción
Para acceder al valor de una opción usamos la función get_option() que tiene 2 parámetros:
- $nombre: el nombre de la opción. Es un parámetro obligatorio. Por defecto, WordPress almacena en la base de datos muchas opciones (casi todas se pueden editar desde el menú Ajustes del administrador). Aquí podemos ver una lista de las opciones almacenadas por defecto.
- $valor_por_defecto: es el valor que se devolverá si no se encuentra la opción en la base de datos. Es un parámetro opcional.
Ejemplo de cómo se accedería a la opción creada en el punto anterior:
get_option('saludo'); |
Por si acaso esta opción no se encontrara en la base de datos, podemos devolver un valor por defecto:
get_option('saludo', 'Hola'); |
Actualizar el valor de una opción
Para actualizar el valor de una opción usamos la función update_option() que también tiene 2 parámetros:
- $nombre: el nombre de la opción que vamos a actualizar. Es un parámetro obligatorio.
- $nuevo_valor: el valor con el que se actualizará la opción. También es obligatorio. Este nuevo valor puede ser una cadena, un array, un objeto o un valor serializado.
Veamos un ejemplo de cómo actualizar el valor de nuestra opción:
update_option('saludo', 'Hola y bienvenido a mi blog'); |
Borrar una opción
Por último, si queremos borrar una opción de la base de datos, usamos la función delete_option() que sólo lleva un parámetro:
- $nombre: el nombre de la opción que vamos a borrar. Es obligatorio.
Esta función devuelve TRUE si el borrado ha tenido éxito o FALSE en caso contrario. Veamos el ejemplo:
delete_option('saludo'); |
Con estas 4 funciones podemos usar la base de datos de WordPress para almacenar la información que necesitemos. Si estamos creando un plugin para WordPress, podremos usarlas para almacenar las opciones de configuración de nuestro plugin. Fácil, ¿no?
quiero mas informacion en el manejo de base de datos
excelente aporte!
Exelente aporte! mi amigo gracias!
Buenas tardes.
Buen aporte. Utilizo las options de wordpress para una página de opciones de tema, donde almaceno información de la web como links a redes sociales, telefonos, direcciones, meta etiquetas, codigo de analytics, etc..
¿Cual crees que sería mejor opción para guardar en base de datos cadenas que contienen comillas simples y/o dobles?
Por ejemplo en mi caso tengo un campo para configurar el código de google analytics. Este código como sabrán, incluye tags script y comillas simples. Tengo otros campos para guardar por ejemplo geo meta tags que contienen comillas dobles.
He buscado alguna funcion de wordpress para guardar correctamente este tipo de datos, y no he encontrado ninguna que me sirva para todos los casos. wp_kses_stripslashes por ejemplo para comillas simples no vale.
Lo que he hecho al final a la hora de guardar la cadena:
update_option(«my_option», stripslashes($_POST[«my_option»]));
y a la hora de recuperar la información:
esc_attr(get_option(‘my_option’))
¿lo ven bien o saben de alguna forma mas segura y fiable?