¿Trabajando con datos cambiantes y en caché? WP-Transients tiene tu espalda!

El cambio de datos siempre está presente en un sitio con WordPress. Ya sea una nueva publicación, un comentario agregado o un tweet actualizado para la página principal, el estado de un blog se modifica constantemente. Dado que estos datos suelen ser útiles para un visitante, surge la necesidad de mostrarlos. Sin embargo, esto se ve afectado por el hecho de que la información dinámica, especialmente de fuentes externas, se traduce en sitios cargados y más lentos. Cuando se trata de estos problemas, la API de WordPress Transient lo tiene cubierto con su robo de caché. El siguiente screencast mostrará exactamente cómo aprovechar sus características..


Screencast


Paso 1 Obtener el transitorio por nombre

Accede a un transitorio pasando un nombre a la get_transient () función. No te preocupes ¡Aunque todavía no ha creado uno, este es el primer paso! Para nuestro ejemplo, obtendremos un conteo de seguidores en Twitter.

 $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient);

Paso 2 Comprueba si el transitorio ha expirado

Si el valor de retorno de get_transient () es falso, el transitorio ha caducado (según el parámetro de tiempo explicado en el paso 3) o nunca se configuró en primer lugar:

 if (false === $ count) // transient ha caducado; continúe con el paso 3

Paso 3 Si expiró, establezca el transitorio

Cuando un transitorio expira, necesita ser reiniciado; en otras palabras, los datos necesitan ser actualizados. Para lograr esto, primero recupere los nuevos datos. En este caso, obtenga el conteo de seguidores a través de la API de Twitter según el video:

 $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) count = (int) $ json [0] -> followers_count;

Ahora guárdelo usando el set_transient () función. Tenga en cuenta que esto requiere un nombre, valor y tiempo de caducidad en segundos como parámetros. Transcurrido este tiempo., get_transient () devolverá false y activará este paso nuevamente:

 // caducará en 1 día (60 segundos / minuto * 60 minutos / hora * 24 horas / día = segundos / día) set_transient ($ transitorio, $ count, 24 * 60 * 60);

Paso 4 Ponlo todo junto

Combinando esto en una sola función se obtiene:

 function twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient); if (false === $ count) $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; set_transient ($ transient, $ count, 24 * 60 * 60);  return $ count; 

El conteo de seguidores no solo está disponible para su uso en cualquier lugar de su sitio, sino que también se almacena en caché de manera eficiente todos los días para reducir los tiempos de carga.


Código final del video

El código final del screencast, con algunas modificaciones, se incluye a continuación:

 class WPTuts_Transients public function WPTuts_Transients ()  public function twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  función pública refresh_twitter_follower_count () $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); $ cuenta = falso; if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) count = (int) $ json [0] -> followers_count; devuelve $ count;  función pública twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  función pública refresh_twitter_recent_tweets () $ data = @file_get_contents ("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=envatowp&count=5&trim_user=true&exclude_replies=true"); $ json = json_decode ($ data); $ tweets = falso; si ($ json) $ tweets = $ json; devuelve $ tweets;  función pública feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  función pública refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ cuenta = falso; if (preg_match ('~ la circulación = "(\ d +)" ~', $ datos, $ coincidencias) && isset ($ coincidencias [1])) $ count = (int) $ coincidencias [1]; devuelve $ count;  función privada process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ transient); if (false === $ data) if (es_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ transient, $ data, $ time);  devolver $ datos; 

Gracias

Espero que este tutorial haya sido útil en la API de WordPress Transient. Por favor, siéntase libre de dejar sus comentarios a continuación.