[WordPress] SharedCount API を使って簡単にSNSのシェア数を表示する方法

SharedCount: Social URL Analytics (シェアされたカウント数を表示するWebサービスです)のAPIを使ったSNSのシェア数を簡単に表示するという事をやってみたので、詳しくやり方をまとめてみました。

SharedCount API からのデータ取得から WordPress への表示の仕方までをまとめましたが、細かいことも書いていたら長くなってしまいました…。最終的なコードは下の方にあります。

SharedCount API の使い方など

取得できるSNSの種類

SharedCount API で取得できるSNSのカウントデータは次の種類のものになります。

Facebook・Delicious・GooglePlusOne・Buzz・Twitter・Diggs・Pinterest・LinkedIn・StumbleUpon・Reddit

海外のサービスなので、はてなブックマークなどはなく日本ではあまりみかけないSNSも入っていますね。

SharedCount API のデータ取得方法

SharedCount API のデータ取得方法は簡単で、「http://api.sharedcount.com/?url= + カウント数を取得したいエンコードされたサイトアドレス」をGET リクエストで送信するだけです。

例えばこのブログのトップページのSNSカウント数を JSON データで取得する場合は以下のようなアドレスを送信します。

http://api.sharedcount.com/?url=http%3A%2F%2Forientalpage.heteml.net%2Fmemocarilog

アドレスバーに上記を打ち込むと以下のようなデータがかえってきます。

{
	"StumbleUpon":0,
	"Reddit":0,
	"Facebook":{"commentsbox_count":0, "click_count":0, "total_count":2, "comment_count":0, "like_count":1,	"share_count":1 },
	"Delicious":2,
	"GooglePlusOne":1,
	"Buzz":0,
	"Twitter":14,
	"Diggs":0,
	"Pinterest":0,
	"LinkedIn":0
}

これがこのブログのSNSカウント数のデータになります。Facebook がトータルで2(4行目)、Twitter では14シェア(8行目)されていることが分かります。このデータを使って WordPress に表示を行います。

WordPress でカウント数データを取得する

WordPress で上記のデータを受け取るには以下のようなコードになります。

$url = get_permalink( $post_id ); 
// 現在開いているページのURLを取得
$json = file_get_contents("http://api.sharedcount.com/?url=" .rawurlencode($url));
// PHP の file_get_contents関数でJSONデータを読み込み $json へ格納する

これで $json にはSNSカウント数のJSONデータが入りました。しかしこのままでは WordPress で扱えないため、以下のコードで PHP の形式へ変換します。

$counts = json_decode($json, true);
// JSONデータを連想配列形式に変換して $counts へ格納する

$counts へは以下のように配列に変換されて入っていますので、あとはこのデータを WordPress へ表示するだけです。

array(10) {
  ["StumbleUpon"]=> int(0)
  ["Reddit"]=> int(0)
  ["Facebook"]=> array(6) {
      ["commentsbox_count"]=> int(0)
      ["click_count"]=> int(0)
      ["total_count"]=> int(2)
      ["comment_count"]=> int(0)
      ["like_count"]=> int(1)
      ["share_count"]=> int(1)
    }
  ["Delicious"]=> int(2)
  ["GooglePlusOne"]=> int(1)
  ["Buzz"]=> int(0)
  ["Twitter"]=> int(14)
  ["Diggs"]=> int(0)
  ["Pinterest"]=> int(0)
  ["LinkedIn"]=> int(0)
}

WordPress でカウント数を表示する

SNSごとに表示する

各SNSごとに表示するには以下のようなコードになります。(日本でも需要がありそうなものだけにしました)

echo "<p>Facebook ".esc_html($counts["Facebook"]["total_count"])."</p>";
echo "<p>Delicious ".esc_html($counts["Delicious"])."</p>";
echo "<p>Google+1 ".esc_html($counts["GooglePlusOne"])."</p>";
echo "<p>Buzz ".esc_html($counts["Buzz"])."</p>";
echo "<p>Twitter ".esc_html($counts["Twitter"])."</p>";
echo "<p>Diggs ".esc_html($counts["Diggs"])."</p>";
echo "<p>Pinterest ".esc_html($counts["Pinterest"])."</p>";

これを表示すると下の画像のように表示されます。
SNSごとにカウント表示
ソースコードはこんな感じです。
SNSごとにカウント表示したソースコード

トータルシェア数を表示する

参考サイトのようにトータルシェア数を表示する場合は以下のように各SNSを $totalcounts に足してから表示します。

$totalcounts = $counts["Twitter"] + 
$counts["Facebook"]["total_count"] +
$counts["GooglePlusOne"] +
$counts["Pinterest"];
echo "<p>合計→ ".esc_html($totalcounts)."</p>";

最終的なコード

上記までのコードを直接テンプレートファイルへ記入しても表示されますが、管理がしにくくなるので functions.php へコードをまとめます。

functions.php へ以下のように記入してまとめることができます。表示しなくてもよいSNSは削除して下さい。

<?
function social_shares() {
    $url = get_permalink( $post_id );  
    $json = file_get_contents("http://api.sharedcount.com/?url=" .rawurlencode($url));
    $counts = json_decode($json, true);
     
    // トータルカウント数を計算
    $totalcounts = $counts["Twitter"] + 
    $counts["Facebook"]["total_count"] +
    $counts["GooglePlusOne"] +
    $counts["Pinterest"];
         
    // それぞれのSNSシェア数を表示
    echo "<p>Facebook→ ".esc_html($counts["Facebook"]["total_count"])."</p>";
    echo "<p>Delicious→ ".esc_html($counts["Delicious"])."</p>";
    echo "<p>Google+1→ ".esc_html($counts["GooglePlusOne"])."</p>";
    echo "<p>Buzz→ ".esc_html($counts["Buzz"])."</p>";
    echo "<p>Twitter→ ".esc_html($counts["Twitter"])."</p>";
    echo "<p>Diggs→ ".esc_html($counts["Diggs"])." </p>";
    echo "<p>Pinterest→ ".esc_html($counts["Pinterest"])."</p>";
     
    // トータルカウント数を表示
    echo "<p>合計→ ".esc_html($totalcounts)."</p>";
}
?>	

カウント数を表示したいテンプレートの箇所へ以下を記入すればOKです。

<?php social_shares() ?>

各SNS の API の仕様がかわった時に、SharedCount が対応してくれないと表示ができなくなるという可能性がありますが、簡単にカウント数の表示ができていいなと思いました。

参考記事と、この記事では PHP を使って表示する方法をご紹介していますが、API で取得できるのは JSON と JSONP のデータなので JavaScript でも表示することもできます。

JavaScript と PHP ではWebページを表示するまでの順番が変わるので少し注意です。詳しくは以下の記事の「JavaScriptとPHPの動作の違い」の項目が参考になります。

Related Article

No Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル コンテンツ スライドショー jQueryプラグイン php 引っ越し 素材 お知らせ JavaScript Facebook CSS カテゴリー 投稿タイプ IE HTML5 Shareボタン seo レスポンシブ Photoshop タクソノミー ナビゲーション カスタムメニュー Git Macアプリ サイドバー WPセキュリティ SVG iTunes PHPリファレンス API WP使い方 query_posts データベース get_posts() 条件分岐 コメント function RSS スマートフォン Sass/Compass さくらVPS