Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.
Grâce à l’API Twitter, vous pouvez très simplement récupérer le nombre de followers d’un compte donné. L’API Twitter ne permet pas un nombre de requêtes illimités, c’est pourquoi il est nécessaire de stocker temporairement le résultat d’une requête grâce au cache WordPress (un stockage temporaire d’une information en base de donnée).
L’ancienne méthode
Il y a encore peu, il était possible d’utiliser l’API publique V1 très simplement comme ceci :
function twitter_followers_count($nom_twitter){ $data = file_get_contents("https://cdn.api.twitter.com/1/users/lookup.json?screen_name=" . $nom_twitter); $data = json_decode($data, true); $data = $data[0][followers_count]; return $data; }
Malheureusement, cette API n’est plus disponible et a été remplacée par l’API V1.1 qui n’autorise plus les requêtes anonymes.
Nous allons donc devoir authentifier notre requête et, pour éviter de consulter l’API Twitter à chaque chargement de page. Pour ce faire, nous allons utiliser une fonction capable de stocker temporairement le résultat de la requête en base. De cette manière, l’application Twitter ne sera solicité qu’une fois par heure afin de mettre à jour le compteur, vous préserverez ainsi votre quota de requêtes et éviterez les messages d’erreur.
Créer une application Twitter
Il vous faudra donc posséder un compte Twitter et créer un application pour récupérer une clé secrète ainsi qu’un identifiant utilisateur.
Voici les champs qu’il vous faudra remplir pour obtenir les identifiants demandés.
La fonction
Une fois que vous avez bien créé votre application, il ne vous reste plus qu’à coller cette fonction dans le fichier functions.php de votre thème .
N’oubliez pas de remplacer les XXXXXXX par les clés de votre nouvelle application (évidemment).
function twitter_followers_count($screenName = 'google') { // déclaration des variables $consumerKey = 'XXXXXXXXXXXXXXXXXXX'; $consumerSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $token = get_option('cfTwitterToken'); // On consulte le cache $numberOfFollowers = get_transient('cfTwitterFollowers'); // Si le cache n'existe pas (ou plus) if (false === $numberOfFollowers) { // reconnexion à l'API si elle est expirée if(!$token) { // préparation de l'authentification à partir des clés $credentials = $consumerKey . ':' . $consumerSecret; $toSend = base64_encode($credentials); // Préparation de le requête HTTP $args = array( 'method' => 'POST', 'httpversion' => '1.1', 'blocking' => true, 'headers' => array( 'Authorization' => 'Basic ' . $toSend, 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8' ), 'body' => array( 'grant_type' => 'client_credentials' ) ); add_filter('https_ssl_verify', '__return_false'); $response = wp_remote_post('https://api.twitter.com/oauth2/token', $args); // récupération de la réponse et décodage du format json $keys = json_decode(wp_remote_retrieve_body($response)); if($keys) { // sauvegarde du token de la réponse en base update_option('cfTwitterToken', $keys->access_token); $token = $keys->access_token; } } // on a donc le token soit via l'API soit via la requête en base selon son état $args = array( 'httpversion' => '1.1', 'blocking' => true, 'headers' => array( 'Authorization' => "Bearer $token" ) ); add_filter('https_ssl_verify', '__return_false'); $api_url = "https://api.twitter.com/1.1/users/show.json?screen_name=$screenName"; $response = wp_remote_get($api_url, $args); // Si pas d'erreur et valeur absente on récupère la nouvelle valeur via l'API if (!is_wp_error($response)) { $followers = json_decode(wp_remote_retrieve_body($response)); $numberOfFollowers = $followers->followers_count; } else { // Sinon on récupère la valeur stockée $numberOfFollowers = get_option('cfNumberOfFollowers'); } // On enregistre la valeur en cache pour une durée d'une heure (c'est en seconde, donc vous pouvez facilement augmenter le temps de ce cache). set_transient('cfTwitterFollowers', $numberOfFollowers, 1*60*60); update_option('cfNumberOfFollowers', $numberOfFollowers); } return $numberOfFollowers; }
Une fois que votre fonction est en place, il vous suffit de l’appeler comme suit :
echo twitter_followers_count('google');
Dans ce cas ‘google’ est le nom du compte dont on veut remonter le compteur, c’est également le compte consulté par défaut par la fonction, vous pouvez évidemment le changer.
A noter qu’avec cette méthode de cache, le chargement de la page ne sera pas bloqué durant la consultation de l’API puisque cette dernière ne sera sollicitée que toutes les heures (selon la durée du transient). Si vous utilisez un système de cache, je vous conseille d’appeler la fonction twitter_followers_count en AJAX.