Travailler avec des données changeantes et pouvant être mises en cache? WP-Transients a votre dos!

Le changement de données est toujours présent dans un site utilisant WordPress. Qu'il s'agisse d'un nouveau message, d'un commentaire ajouté ou d'un tweet mis à jour pour la page d'accueil, le statut d'un blog est constamment modifié. Ces données étant souvent utiles au visiteur, il est nécessaire de les afficher. Cela est toutefois affecté par le fait que les informations dynamiques, en particulier celles provenant de sources externes, entraînent des sites surchargés plus lents. En ce qui concerne ces problèmes, l’API WordPress Transient vous couvre grâce à sa mise en cache robuste. Le screencast suivant montrera exactement comment tirer parti de ses fonctionnalités.


Screencast


Étape 1 Obtenir le transitoire par nom

Accéder à un transitoire en passant un nom à la get_transient () une fonction. Ne t'inquiète pas Même si vous n'en avez pas encore créé, c'est toujours la première étape! Pour notre exemple, nous aurons un compte d'abonnés Twitter.

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

Étape 2: Vérifiez si le transitoire a expiré

Si la valeur de retour de get_transient () est faux, le transitoire a expiré (selon le paramètre de temps expliqué à l'étape 3) ou n'a jamais été défini en premier lieu:

 if (false === $ count) // le transitoire a expiré; passez à l'étape 3

Étape 3 Si expiré, définissez le transitoire

Lorsqu'un transitoire expire, il doit être réinitialisé. en d'autres termes, les données doivent être actualisées. Pour ce faire, commencez par récupérer les nouvelles données. Dans ce cas, obtenez le nombre d'abonnés via l'API Twitter selon la vidéo:

 $ 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;

Maintenant, stockez-le en utilisant le set_transient () une fonction. Notez que cela nécessite un nom, une valeur et un délai d'expiration en secondes en tant que paramètres. Passé ce délai, get_transient () retournera false et déclenchera à nouveau cette étape:

 // expire dans 1 jour (60 secondes / minute * 60 minutes / heure * 24 heures / jour = secondes / jour) set_transient ($ transitoire, $ count, 24 * 60 * 60);

Étape 4 Rassemblez tout

En combinant cela dans une fonction, vous obtenez:

 function twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transitoire); 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 ($ transitoire, $ compte, 24 * 60 * 60);  return $ count; 

Le nombre d'abonnés est non seulement disponible pour être utilisé n'importe où sur votre site, mais il est également mis en cache efficacement chaque jour pour réduire les temps de chargement..


Code final de la vidéo

Le code final du screencast, avec quelques modifications, est inclus ci-dessous:

 class WPTuts_Transients fonction publique WPTuts_Transients ()  fonction publique twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  fonction publique refresh_twitter_follower_count () $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); $ count = false; if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; return $ count;  fonction publique twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  fonction publique 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 = false; if ($ json) $ tweets = $ json; renvoyer $ tweets;  fonction publique feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  fonction publique refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; if (preg_match ('~ circulation = "(\ d +)" ~', $ data, $ correspond à) && isset ($ correspond [1])) $ count = (int) $ correspond à [1]; return $ count;  fonction privée process_transient ($ transitoire, $ actualisation, $ heure) $ data = get_transient ($ transitoire); if (false === $ data) if (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ transitoire, $ data, $ time);  return $ data; 

Merci

J'espère que ce didacticiel a été utile sur l'API WordPress Transient. S'il vous plaît n'hésitez pas à laisser vos commentaires ci-dessous.