Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
transients

WordPress transients, opciones que expiran en el tiempo

En la entrada anterior vimos cómo trabajar con la API de opciones de WordPress. En ésta vamos a ver qué son los transients.

Los transients son opciones con fecha de caducidad. ¿Qué quiere decir esto? Se almacenan también en la tabla wp_options, pero con la diferencia de que tienen fecha de expiración. De este modo, podemos usar la tabla wp_options para hacer nuestro propio sistema de caché.

Es decir, si en nuestro sitio tenemos consultas muy complejas, podemos almacenar el resultado en un transient y acceder a él en lugar de volver a realizar la consulta cada vez que un visitante entra en la web. Cierto es que seguimos haciendo una consulta a la base de datos para obtener el transient, pero ésta vez hacemos una consulta sencilla y obtenemos el resultado, en lugar de hacer una consulta compleja cada vez.

De esta manera podemos optimizar y mejorar un poco el rendimiento de nuestra web. Es una técnica WPO de cacheo de resultados de queries complejas en base de datos. Esto mejora aún más si utilizas algún plugin de caché como W3 Total Caché.

También resulta de gran utilidad si tu sitio tiene mucho tráfico y hace llamadas a servicios externos como pueden ser Facebook, Twitter, etc…en lugar de hacer estas llamadas en cada petición, puedes almacenar estos datos en un transient, y establecer un tiempo de expiración de 15 minutos por ejemplo, así todo el tráfico que tengas durante esos 15 minutos obtendrán la información de la base de datos en lugar de hacer peticiones a servicios externos.

 

Funciones de la transients API

Cómo hemos dicho anteriormente la API de transients es muy similar a la API de opciones. En este caso tenemos disponibles funciones para establecer, obtener y eliminar datos:

<?php /** * Guardar datos * * $transient: Identificador único de nuestro dato (45 caracteres máximo, 40 en multisite) * $value: Valor de nuestro dato * $expiration: El valor máximo en segundos que mantendremos la variable antes de refrescarla */ set_transient( $transient, $value, $expiration ); /** * Obtener datos * * $transient: Identificador único de nuestro dato. Si no se encuentra devuelve false */ get_transient( $transient ); /** * Obtener datos * * $transient: Identificador único de nuestro dato. Si no se encuentra no se realiza ninguna acción */ delete_transient( $transient );?>

A partir de la versión 3.5 de WordPress se introdujeron una serie de constantes para hacer más fácil el cálculo del tiempo de expiración del transient:

MINUTE_IN_SECONDS = 60 (segundos) HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS

Veamos ahora en un ejemplo cómo hacer una función que calcule el número de veces que ha sido compartida una entrada en Facebook. En un blog con mucho tráfico, podemos encontrarnos con múltiples llamadas a la API de Facebook, lo que puede ocasionar una caída del rendimiento y lentitud en la página. Almacenaremos ese dato en un transient por un periodo de 15 minutos:

<?php function facebook_count(){ $transient_data = get_transient('facebook_count'); if ( !$transient_data ) { // Obtenemos los datos de facebook $return = wp_remote_get( 'http://graph.facebook.com/?id=http://www.midominio.com', array( 'timeout' => 10 ) ); $json = json_decode($return["body"], true); // Guardamos los datos en el transient set_transient('facebook_count', $json["shares"], 15 * MINUTE_IN_SECONDS); } echo sprintf("Esta página ha sido compartida %s veces en facebook", get_transient('facebook_count')); }?>

De este modo obtendremos el dato del transient (siempre que esté activo) en lugar de hacer la llamada a Facebook, y una vez que caduque hacemos la llamada a Facebook, actualizamos el valor y lo establecemos por otros 15 minutos.

Puede que también te interese

Cómo desactivar Gutenberg cuando salga WordPress 5.0
Cómo desactivar Gutenberg cuando salga WordPress 5.0
La versión 5.0 de WordPress está a la vuelta de la esquina, prevista para finales de Agosto. Como ya sabrás a esta altura de la…
Creando un plugin para WordPress parte 2: Estilo del Código
Creando un plugin para WordPress parte 2: Estilo del Código
1. Creando un plugin para WordPress: Planificación y planteamiento 2. Creando un plugin para WordPress: Estilo del Código 3. Creando un plugin para WordPress: Escribiendo…
Mejora la puntuación de Google PageSpeed Insights: Eliminar el JavaScript que bloquea la visualización del contenido de la mitad superior de la página
Mejora la puntuación de Google PageSpeed Insights: Eliminar el JavaScript que bloquea la visualización del contenido de la mitad superior de la página
1. Optimizar imágenes 2. Minificar CSS y JS 3. Especificar caché de navegador 4. Habilita la compresión 5. Reducir el tiempo de respuesta del servidor…
Cómo agregar campos personalizados al perfil de usuario de WordPress
Cómo agregar campos personalizados al perfil de usuario de WordPress
WordPress nos da la opción de permitir que los usuarios se registren en nuestro sitio (en Ajustes => Generales => Cualquiera puede registrarse). Por defecto…