昨日、試しに作っているカスタマイズテーマに直接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のテーマ作成や、カスタマイズ用に使用できるソーシャルカウント取得関数を作成しました。
自分のサイト独自のソーシャルボタンを作成したい場合は、お試しください。
バルーン型のシェアボタンを作成する場合のスタイル設定は、以下を参照してください。