
昨日、試しに作っているカスタマイズテーマに直接APIなどから取得した、ツイートカウント数などを表示させたくなりました。
それで調べてみたら、PHPなどで取得する方法が結構出てきたので、Wordpressで手軽に使えるように関数化してまとめてみました。
目次
ソーシャルカウントの取得
ソーシャルカウントのPHPでの取得方法は以下のページで詳しく解説されています。(JavaScriptでも取得方法も)
僕は今回、上記ページで紹介されている9つのソーシャルサイトの中から、以下のカウント取得方法をWordpressで手軽に使えるように、関数化しました。
- Twitterのツイート数
- Facebookのいいね!数
- Google+の+1数
- はてなのはてブ数
ソーシャルカウント取得関数
ソーシャルカウントの取得方法まとめで書かれているPHPでの取得方法を、Wordpress用にまとめてみました。
テーマのfunctions.phpにコピペで貼り付けて、使えるように以下のように一つにまとめてみました。
これらの関数の中で使われているfile_get_contents()は、サーバー側のPHP設定で外部ファイルが開けるように設定されていない場合、数字をうまく取得できません。サーバから設定を変更するか、サーバに問い合わせてみてください。
////////////////////////////////////
//ソーシャルカウント数取得関数まとめ
////////////////////////////////////
//なるべく他のプラグインと関数名がかぶらないようにするために
//なるべくかぶらなそうな関数名にしてあります。
//参考:http://syncer.jp/how-to-get-sns-count
//ツイート数の取得
function get_twitter_tweet_count($url){
//JSONデータを取得
$json = @file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url='.rawurlencode($url));
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//データが存在しない場合は0扱いにする
if(!isset($array['count'])){
$count = 0;
}else{
$count = $array['count'];
}
//カウントを出力
return $count;
}
//いいね!数の取得
function get_facebook_like_count($url){
//JSONデータを取得
$json = @file_get_contents('http://graph.facebook.com/?id='.rawurlencode($url));
//JSONデータを連想配列に直す
$array = json_decode($json,true);
//データが存在しない場合は0扱いにする
if(!isset($array['shares'])){
$count = 0;
}else{
$count = $array['shares'];
}
//カウントを出力
return $count;
}
//Google+1の取得
function get_google_plus_one_count($url){
//GETリクエストでURLを指定する場合
if(isset($_GET['url'])) $url = $_GET['url'];
//CURLを利用してJSONデータを取得
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ" );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, 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( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) );
$result = curl_exec( $ch );
curl_close( $ch );
//JSONデータからカウント数を取得
$obj = json_decode( $result, true );
//カウントが0の場合
if(!isset($obj[0]['result']['metadata']['globalCounts']['count'])){
$count = 0;
}else{
$count = $obj[0]['result']['metadata']['globalCounts']['count'];
}
//カウントを出力
return $count;
}
//はてブ数の取得
function get_hatena_hatebu_count($url){
//はてブ数を取得
$count = @file_get_contents('http://api.b.st-hatena.com/entry.count?url='.rawurlencode($url));
//カウントが0の場合
if(!isset($count) || !$count){
$count = 0;
}
//カウントを出力
return $count;
}
関数の使用方法
これらの、Wordpress用関数を呼び出すには、テンプレートファイルなどで以下のように呼び出します。
<?php echo get_twitter_tweet_count( get_the_permalink() );?>
<?php echo get_facebook_like_count( get_the_permalink() );?>
Google+
<?php echo get_google_plus_one_count( get_the_permalink() );?>
はてなブックマーク
<?php echo get_hatena_hatebu_count( get_the_permalink() );?>
使用例
テンプレートファイルなどから以下のようにして使います。
<p>Twitterで「ツイート」された数は「<?php echo get_twitter_tweet_count( get_the_permalink() );?>」です。</p> <p>Facebookで「いいね!」された数は「<?php echo get_facebook_like_count( get_the_permalink() );?>」です。</p> <p>Google+で「+1」された数は「<?php echo get_google_plus_one_count( get_the_permalink() );?>」です。</p> <p>はてなで「はてブ」された数は「<?php echo get_hatena_hatebu_count( get_the_permalink() );?>」です。</p>

この方法を応用すれば、以下のようなバルーン型の自作ソーシャルボタンも作ることができます。

まとめ
今回は、Wordpressのテーマ作成や、カスタマイズ用に使用できるソーシャルカウント取得関数を作成しました。
自分のサイト独自のソーシャルボタンを作成したい場合は、お試しください。
バルーン型のシェアボタンを作成する場合のスタイル設定は、以下を参照してください。