web-dev-qa-db-fra.com

Ajouter un lien de partage Facebook personnalisé avec nombre de partages et texte variable

J'essaie de faire cela dans une page d'accueil du site de nouvelles.

news site homepage

La partie avec laquelle je me bats est le texte du lien de partage Facebook. Cela devrait:

  • compter le partage/lien de la publication spécifique
  • cache le nombre est 0
  • écrivez "partager!" s'il a 0 part
  • écrire "partagé 1 fois" s'il a 1 partage
  • écrivez "n actions" s'il a plus de 1 actions.

Le texte est arbitraire, j'aimerais pouvoir le contrôler.

J'ai trouvé ce code pour obtenir le nombre de likes:

function get_likes($url) {
 $json_string = file_get_contents('http://graph.facebook.com/?ids=' . $url);
 $json = json_decode($json_string, true);
 return intval( $json[$url]['shares'] );
} 

Et j'ai réussi à l'utiliser pour obtenir le nombre de partages réel:

<a href="http://www.facebook.com/sharer.php?u=<?php the_permalink();?>&t=<?php the_title(); ?>">
 <?php $url = get_permalink( $post_id ); echo get_likes("$url"); ?> shares</a>

Maintenant, la partie difficile serait de savoir comment contrôler le texte de la même manière que dans "comments_number":

comments_number( 'no responses', 'one response', '% responses' );

Un indice?

1
molokom

J'ai trouvé une solution simple grâce à cette réponse: Comment changer le singulier/pluriel de "comment" en "commentaires" sur le nombre de commentaires de Facebook?

Voici comment j'ai résolu sans la balise, en utilisant le code pour lequel je travaillais déjà, cela va dans function.php

function get_likes($url) {
   $json_string = file_get_contents('http://graph.facebook.com/?ids=' . $url);
   $json = json_decode($json_string, true);
   $count = intval( $json[$url]['shares'] );
   if ($count == 0) {
     echo "share!";
   } elseif ($count == 1) {
     echo "shared 1 time";
   } else {
   echo "$count shares";
   }
} 

et cela dans le modèle

<?php $url = get_permalink( $post_id ); echo get_likes($url); ?>
1
molokom