Datos con fecha de caducidad en WordPress

Desarrollando plugins para WordPress me he encontrado varias veces con la necesidad de guardar datos durante un leve período de tiempo, es decir, datos con fecha de caducidad. En estos casos, me veía en la engorrosa necesidad de programar borrarlos cada “x” tiempo.

Sin embargo, un día me encontré en el Codex la Transient API y desde entonces, la he utilizado en muchísimas ocasiones con unos resultados excelentes.

Pongamos por ejemplo, que mi plugin utiliza la API de twitter para recopilar datos en tiempo real, pero dada la frecuencia con la que a veces se cae, queremos guardar los datos durante unos minutos o simplemente guardarlos durante 2 minutos y eliminarlos, de manera que cuando dichos datos no se encuentren en la BD, haremos la llamada externa y no superaremos el número de consultas máximo que nos permite la API de twitter por minuto.

Las 3 funciones son:

// Save a transient to the database
set_transient($transient, $value, $expiration);

// Fetch a saved transient
get_transient($transient);

// Remove a saved transient
delete_transient($transient);

La primera, sirve para crear o modificar, si ya existe, el campo que le pasamos en el atributo $transient con el valor que le pasamos en $value y con un tiempo de caducidad pasado en $expiration. En el siguiente ejemplo vamos a guardar los resultados de nuestra query durante una hora:

set_transient('mi_plugin_opciones', $query_results, 60*60);

Para recuperar los datos usaremos:

get_transient('mi_plugin_opciones');

Y para eliminar dicho campo de la tabla de opciones de la base de datos:

delete_transient('mi_plugin_opciones');

Para los que estais más familiarizados con las funciones de WordPress, podeis comprobar que la Transient API es muy similar a la Options API pero con la diferencia de que le han ampliado la funcionalidad del tiempo de caducidad.

Espero que os sea de utilidad 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s