Snippets e Shortcodes

Como Exibir o Número de Likes, Plus e Tweets no WordPress

Google+ Pinterest LinkedIn Tumblr
Anúncios Google

Fazendo nossas personalizações em templates, às vezes precisamos de algo diferente da contagem padrão que os botões das redes sociais oferecem. Falando especificamente aqui de Facebook (likes, ou curtidas), GooglePlus (+1) e Twitter (tweets), eles têm seus próprios contadores, normalmente em forma de um balão em cima ou ao lado do botão, você já deve saber do que estou falando.

Mas como recuperar esse número de curtidas, +1 ou tweets e usá-los / estilizá-los à vontade? Precisei disso recentemente até que descobri esses métodos, devidamente creditados. São em PHP, portanto facilmente empregáveis na estrutura do WordPress.

Facebook

Comece usando isso no functions.php do seu template:

// RETORNA TOTAL DE FACEBOOK LIKES
// ORIGINAL POR http://halgatewood.com/get-number-of-facebook-likes-for-a-url/
function get_fb_likes($url) {
$query = "select total_count,like_count,comment_count,share_count,click_count from link_stat where url='{$url}'";

$call = "https://api.facebook.com/method/fql.query?query=" . rawurlencode($query) . "&format=json";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $call);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output);
}

Depois é só chamar dentro da página (geralmente no arquivo post.php, index.php, ou outro lugar onde haja um loop que chama os artigos, sejam resumos ou completos) o número de interações que você quer. Esse código pode mostrar o total de:

  • share_count: quantas vezes a página foi compartilhada.
  • total_count: quantas vezes a página foi comentada, curtida e compartilhada (a soma das ações).
  • like_count: total de curtidas na página, direto nela ou nas vezes em que foi compartilhada, mais as curtidas em comentários dessa página.
  • comment_count: total de comentários via Facebook na página.
  • click_count: quantas vezes usuários clicaram em links para essa página vindos de um compartilhamento feito por alguém.

Assim ficaria uma chamada de todos esses dados:

if(function_exists('get_fb_likes')) {
$url = get_permalink();
$fb_likes = reset( get_fb_likes("$url") );
echo $fb_likes->total_count;
echo $fb_likes->like_count;
echo $fb_likes->comment_count;
echo $fb_likes->share_count;
echo $fb_likes->click_count;
}

Se quiser só uma informação ou outra, basta retirar a parte que não interessa. Para exibir só o número de likes, por exemplo, ficaria:

if(function_exists('get_fb_likes')) {
$url = get_permalink();
$fb_likes = reset( get_fb_likes("$url") );
echo $fb_likes->like_count;
}

Para estilizar é só envolver isso numa tag span ou div e usar CSS, bem padrão:

<span><?php aqui o código anterior ?></span>

Twitter

Precisa do total de retweets da sua página? Então coloque isso no seu functions.php:

// RETORNA TOTAL DE TWEETS
// ORIGINAL POR http://ottopress.com/2010/twitters-new-tweet-button-and-the-count-api/
function get_tweet_count($url) {
$count = 0;
$data = wp_remote_get('ht'.'tp://urls.api.twitter.com/1/urls/count.json?url='.urlencode($url) );
if (!is_wp_error($data)) {
$resp = json_decode($data['body'],true);
if ($resp['count']) $count = $resp['count'];
}
return $count;
}

Para exibir o total de tweets, use:

<?php echo $count = get_tweet_count(get_permalink()); ?>

GooglePlus

Para obter o total de plus, coloque na functions.php:

// RETORNA TOTAL DE PLUS
// ORIGINAL POR http://johndyer.name/getting-counts-for-twitter-links-facebook-likesshares-and-google-1-plusones-in-c-or-php/
function get_plusones($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
$curl_results = curl_exec ($curl);
curl_close ($curl);
 
$json = json_decode($curl_results, true);
return intval( $json[0]['result']['metadata']['globalCounts']['count'] );
}

E para exibir:

<?php echo $count = get_plusones(get_permalink()); ?>

Essa recuperação de números sociais pode ter várias serventias, como uma personalização mais interessante para seu template, ou carregar os dados no uso de schema para motores de busca. Lembrando que para estilizar, é só envolver o código com um span (ou div, ou outra tag que você precise).

Fundador do Tutoriart em 2010, é ex-instrutor de Photoshop, design web e gráfico. Em quase uma década de redação online, tem cerca de 1500 artigos publicados. Gerencia também o Memória BIT.

3 Comentários

  1. Olá Daniel,

    Eu mudei o domínio de um blog fazendo o redirecionamento 301 para manter a relevância das páginas, mas perdi todos os números de likes, +1s e tweets de cada post.

    Você sabe se existe alguma maneira de transportar esses números??

    Obrigado e parabéns pelo blog!

    Abração

Deixe um Comentário

Pin