Blog Tool Box

WordPress : afficher son nombre brut de followers Twitter

Dans la même série d’articles, découvrez également :
Afficher son nombre brut de fans Facebook

Pour afficher son nombre de followers Twitter sur son blog, il est possible d’utiliser des boutons/widgets fournis par des services tiers (comme TwitterCounter par exemple) mais cela reste relativement peu esthétique et peut faire, dans certains cas, augmenter le temps de chargement du blog.

Je suis récemment tombé sur un commentaire sur le blog Pro Blog Design qui expliquait une méthode pour afficher son nombre de followers Twitter en texte brut ce qui permet d’intégrer et de styliser ce compteur beaucoup plus aisément. Cette méthode fait appel à des fonctions WordPress très intéressantes, mais relativement peu connues, les « Transients » (explications à la suite).

C’est à mon avis la meilleure solution car elle intègre nativement un système de cache pour éviter des requêtes inutiles qui ralentissent le blog ; je l’ai d’ailleurs intégrée sur Blog Tool Box :

Followers

Voici le code à intégrer au fichier functions.php de votre thème :

function get_follower_count($name){
  $count = get_transient('follower_count');
  if ($count !== false){ return $count; }
  else{
    $count = 0;
    $data = wp_remote_get('http://api.twitter.com/1/users/show.json?screen_name='.$name);
    if (!is_wp_error($data)) {
      $value = json_decode($data['body'],true);
      $count = $value['followers_count'];
    }
    set_transient('follower_count', $count, 60*60);
    return $count;
  }
}

Les transients (ou « données éphémères ») permettent de stocker temporairement une valeur, associée à un nom et à un délai au bout duquel la valeur est supprimée ; ceci est donc notre système de cache.

On vérifie si il existe une valeur transient « follower_count », si oui, on retourne notre nombre de followers enregistré ; si non, on fait une requête à l’aide de la fonction wp_remote_get (également peu connue mais très intéressante) vers Twitter qui nous retourne des informations sur le compte qu’on lui passe en paramètre.

On récupère le nombre de followers fourni par Twitter, on enregistre un nouveau transient « follower_count » qui sera valide pendant 1 heure (60*60) et on retourne ce nombre. Et c’est tout, notre système de cache via le transient nous limite à une requête vers Twitter toutes les heures seulement.

Pour afficher notre nombre de followers Twitter, il suffit maintenant d’appeler notre fonction où nous le voulons dans notre thème en lui donnant le nom du compte en paramètre :

<?php echo get_follower_count("maximeguernion"); ?>

J’ai adapté la même méthode pour afficher le nombre brut d’abonnés FeedBurner (voir l’image de l’article) ainsi que le nombre de fans d’une Page Facebook publique mais ce sera au programme des deux prochains articles.

  • Anthony

    Cool, j’ai hâte de voir la méthode pour Facebook

  • Maxime Guernion

    Méthode qui sera tout aussi simple ! As-tu remarqué que Firefox (via Google) détecte ton site comme une page web malveillante ? :/

  • Anthony

    Ouaip :( Bizarre car je n’ai rien d’hébergé sur ce domaine, les DNS pointent juste vers une page seule sur Flavors.me … je vais leur écrite !

  • Maxime Guernion

    D’après le report ca vient de « lulucabana.com » qui a « généré le téléchargement et l’installation de programmes malveillants sans l’autorisation de l’internaute », tu as du faire un lien & co vers ce site ? Faut que tu fasses une analyse via les Outils Google pour les webmasters pour que le problème se résolve du mieux possible. !

  • Bertrand Braux

    Cette méthode ne m’affiche rien sur mon début de blog. Et j’ai l’impression qu’elle n’est plus active sur Blog Tool Box et que le nombre de followers est écrit en dur. Vrai ?

  • Maxime Guernion

    Cette méthode fonctionne sur Blog Tool Box actuellement et se met à jour toutes les 12h, d’où un probable décalage si il y a gain ou perte de followers avant la mise à jour, tout simplement ! :) C’est surement ça qui vous fait croire que le nombre était écrit en dur ? Vous pouvez essayer de supprimer le transient ou analyser ce que renvoie en brut la requête vers Twitter pour comprendre d’où vient le problème.

  • Vivian Roldo

    C’est bizarre, ça a fonctionné un instant chez moi et à présent ça ne fonctionne plus. Et sur votre blog non plus d’ailleurs (capture d’écran : http://cl.ly/3aht). Ça doit venir de Twitter je pense. Ou d’ailleurs peut-être. Aucun problème en revanche avec la même astuce pour Facebook et Feedburner…

  • Maxime Guernion

    Oui en effet, l’API de Twitter est pas super stable, se surcharge, etc.

    Donc ce que j’ai fais pour éviter d’afficher « 0 followers », si le transient est à zéro, je n’affiche rien du tout (et on verra bien à la prochaine mise à jour dans les X heures) :

    <?php $count = get_follower_count("maximeguernion"); if($count){ echo " - $count followers"; } ?>

    On peut aussi, si on reçoit 0 followers, forcer une autre requête jusqu’à que Twitter réponde mais ca va faire ralentir le blog et/ou surcharger encore plus l’API.

  • Vivian Roldo

    Y a moyen d’afficher une valeur par défaut quand même (genre un chiffre d’abonnée ou un « XXX ») ?

  • Maxime Guernion

    Oui bien sur, il suffit simplement d’ajouter une condition et tu mets ce que tu veux comme message si Twitter ne répond pas :

    <?php $count = get_follower_count("maximeguernion"); if($count){ echo " - $count followers"; } else { echo " - XXXXXXX followers"; } ?>

  • denny

    Merci, grace à ce petit bout de code, j’ai pu l’adapter à mon theme wordpress pour que ça fonctionne.
    Encore merci

  • Strik-Strak

    Merci pour ce bout de code très pratique, je l’ai mis en place sur mon site et tout roule !