WordPressでソーシャルメディアのカウント数を取得して表示する方法

funglr.comのコーポレートサイトではTweetボタンなどのソーシャルメディアのカウント&ボタンは自作してあります。
自作の経緯としては各ソーシャルメディアのJavaScriptを読み込むと重くなるという理由と、デザインをサイトにあったオリジナルの物にしたかったからです。
(しかしオリジナルのボタンの方がクリック率が良いんですよね…)

今回はWordPressで各ソーシャルメディアのカウント数を取得して表示する方法をまとめましたので、参考にして下さい。

はじめに

各ソーシャルメディアのAPIを利用します。funglr.comでは以下のソーシャルメディアのカウント数を取得しています。

  • Twitter
  • Facebook
  • LinkedIn
  • Pocket
  • はてなブックマーク

まずfunction.phpに各APIを利用してカウント数を取得します。
その後、表示したいテンプレート(content.phpやsingle.phpなど)に出力します。コピペで使える様に以下にコードをまとめましたので参考にしてみて下さい。

Twitter

function.php

function twitter($url){
$get_twitter = 'http://urls.api.twitter.com/1/urls/count.json?url=' . $url;
$json = file_get_contents($get_twitter);
$json = json_decode($json);
$twitter = $json->{'count'};
print("$twitter");
}

 

テンプレート

<?php twitter(get_permalink()); ?>

※Twitterは2015年11月20日でツイート数のカウントが取得できなくなります。

Facebook

function.php

function facebook($url){
$get_facebook = 'http://api.facebook.com/restserver.php?method=links.getStats&urls=' . $url;
$xml = file_get_contents($get_facebook);
$xml = simplexml_load_string($xml);
$facebook = $xml->link_stat->total_count;
print("$facebook");
}

 

テンプレート

<?php facebook(get_permalink()); ?>

はてなブックマーク

function.php

function hatena($url){
$get_hatebu = 'http://api.b.st-hatena.com/entry.count?url=' . $url;
$hatebu = file_get_contents($get_hatebu);
if($hatebu == ""){$hatebu = 0;}
print("$hatebu");
}

 

テンプレート

<?php hatebu(get_permalink()); ?>

LinkedIn

function.php

function linkedin($url){
$json = @file_get_contents("http://www.linkedin.com/countserv/count/share?url=".rawurlencode($url));
$json = rtrim($json,');');
$json = ltrim($json,'IN.Tags.Share.handleCount(');
$array = json_decode($json,true);
$linkedin = $array['count'];
print("$linkedin");
}

 

テンプレート

<?php linkedin(get_permalink()); ?>

Pocket

function.php

function pocket($url) {
$query = 'http://widgets.getpocket.com/v1/button?v=1&count=horizontal&url=' . $url;
$html = file_get_contents($query);
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$result = $xpath->query('//em[@id = "cnt"]')->item(0);
return isset($result->nodeValue) ? intval($result->nodeValue) : 0;
}

 

テンプレート

<?php echo pocket(get_permalink()); ?>

まとめ・表示例

こんな感じに記述すれば各ソーシャルメディアのカウント数が表示されます。
ファングラーの記事一覧では以下の様な感じで表示させています。

ソーシャルメディアのカウント取得

記事一覧に各ソーシャルメディアのカウント数が表示されてると人気記事が一目瞭然で良いですね。