Twitter、Facebook、Google+、はてブのソーシャルカウント数をWordPressで直接取得する関数まとめ

昨日、試しに作っているカスタマイズテーマに直接APIなどから取得した、ツイートカウント数などを表示させたくなりました。

それで調べてみたら、PHPなどで取得する方法が結構出てきたので、Wordpressで手軽に使えるように関数化してまとめてみました。

スポンサーリンク
レクタングル(大)広告

ソーシャルカウントの取得

ソーシャルカウントのPHPでの取得方法は以下のページで詳しく解説されています。(JavaScriptでも取得方法も)

12436288584_94d6bc46d2_b.jpg
Twitter、Facebook、Google+など各SNSのカウント数を取得する方法を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用関数を呼び出すには、テンプレートファイルなどで以下のように呼び出します。

Twitter

<?php echo get_twitter_tweet_count( get_the_permalink() );?>

Facebook

<?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>

sample

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

SNSバルーンボタン

まとめ

今回は、Wordpressのテーマ作成や、カスタマイズ用に使用できるソーシャルカウント取得関数を作成しました。

自分のサイト独自のソーシャルボタンを作成したい場合は、お試しください。

バルーン型のシェアボタンを作成する場合のスタイル設定は、以下を参照してください。

先日、自分のサイトテーマで使おうと思ってバルーン型のソーシャルボタンを作ってみました。ソーシャルサービス純正のバルーン型シェ...