こんにちは。ちゃぼP(@chabo0429)です。
先日、WordPress用プラグイン「SNS Count Cache」が突然の非公式APIエンドポイントの閉鎖に伴い、Facebookのシェアカウントが取得できなる現象が発生しました。
そのため、Ver 0.9.2の改造及びVer 0.9.3 Betaの導入でなんとかFacebookのシェアカウントをふっかつさせてみたという記事を書いたのですが、
Ver 0.9.2のカスタマイズ記事
Ver 0.9.3 Betaの導入
今現在、SNS Count Cacheのシェアカウントがどういう状況になっているかといいますと・・・
残念ながら、やはりFacebookのカウントは取れないまま。。
最初はうまく行っていたんですが、しばらく経つとどうしてもカウント数を取得できなくなります。
「SNS Count Cache」でFacebookシェアカウント数が取れなくなる原因は、コール上限に達してしまうからというのが理由
なぜこういうことになるのかというと、今回から利用することにした公式のAPIエンドポイント「http;//graph.facebook.com」というAPIは、過大な負荷を避けるために、一定時間ごとのコール数(カウント取得のためのリクエスト)を制限しているから、というのが理由です。
それを回避するためには、「アクセストークン」という認証キーを使うことで、認証済みのアプリからのリクエストであることを都度申告をすれば、「600秒に600回」まではリクエストを受け付けるという仕様になっているとのこと。
ところが、「SNS Count Cache」はこのアクセストークンを使ったリクエストに対応していないため、あっという間にリミット上限に達して取得が不可になるということになったわけです。
この現象を回避すべく、この「アクセストークン」を使って取得できないか調べてみた
最初はSNS Count Cacheにこのトークンを実装できないかを調べてみましたが、あえなく挫折。そこで、別のプラグインを探してみたところ、ありました。アクセストークンに対応したシェアカウント取得用のキャッシュプラグインが!
それがこちら。
「Step by Step Social Count Cache」というプラグインです。これを探し当てた時は半信半疑でしたが、実装はとっても簡単で動作も軽いので、速攻このブログでは実装してしまいました。
インストールはWordPress公式から
インストールは通常の管理画面の「プラグインの追加」から行います。
「Step by Step Social Count Cache」で検索すれば出てきます。検索に出てきたら、「今すぐインストール」→「有効化」をクリックして有効化します。
「設定」→「Step by Step Social Count Cache」を選択します。
最初に、Facebookのアクセストークンを入力します。アクセストークンの入手方法については、Facebookにログインした状態で、Facebookデベロッパーサイトにアクセスします。
https://developers.facebook.com/
アプリが追加されていれば、アプリIDなどが表示される画面が出てくるはずです。
「ツール&サポート」をクリックします。
「Access Token Tool」をクリックします。
画面最下部に「App Token」をコピーして、「Step by Step Social Count Cache」の「App Token」に入力すればOKです。
カウントキャッシュをするSNSと、取得間隔を設定します。基本的にデフォルトのままでいいと思います。
実際に取得できているか、ページに表示させてみた
設定は実はコレだけ。これですぐに取得を始めてくれます。
ただ、SNS Count Cacheのようにダッシュボード機能は実装されていないんので、実際の表示ページに関数を入れて、表示させてみるしかありません。
「Step by Step Social Count Cache」では、各SNSごとにそのカウント数を個別に表示する関数及び合計を表示する関数が定義されているので、それを「single.php」の表示させたいところに記述すれば、表示されるはずです。
試しに、「single.php」の上部にあるカウントの部分を以下のように書き換えてみました。
<!-- <?php if(function_exists('scc_get_share_total')) echo scc_get_share_total(); ?> --> <?php $socal_count = sbs_get_all(); echo $socal_count["all"]; // 全てのSNSの合計を返す echo $socal_count["twitter"]; echo $socal_count["facebook"]; echo $socal_count["google"]; echo $socal_count["hatena"]; echo $socal_count["pocket"]; echo $socal_count["feedly"]; ?>
1〜3行目は今までのSNS Count Cache用の関数なので、コメントアウトし、その下に「Step by Step Social Count Cache」用の関数を書き加えました。この状態で、先日のバンガードのカメラバッグの記事を表示させてみると・・・
なんかとんてもない数が表示されていますが、これは※の部分がシェアカウントの合計。その右側の①がTwitter、②がFacebook、③がGoogle+、④がはてなブックマーク、⑤がPocket、⑥がFeedlyです。つまり、①〜⑤までの合計は※に表示されています。
ちゃんとすべてのSNSシェアカウントが取得できていますね!
あとは、合計のカウントだけを表示させたいのであれば
echo $socal_count["all"];
以外を削除すればいいですし、逆に個別に表示させたいのであれば、それぞれの関数を適宜記述するだけです。
ちなみにこのプラグインには標準でバルーン表示やスクエア表示などのデザインテンプレートが用意されていて、簡単に綺麗なシェアカウントを表示することも出来ます。
さいごに。
「SNS Count Cache」はとても優れたプラグインですが、Facebookのシェアカウント取得に関しては、APIの仕様が変わることがない限り、ちょっと運用だけではトラブルの回避は現状難しそうな気がしています。
アクセストークンを実装できれば、元に戻したいと思いますが・・・
ちなみに、フォロワー数の取得に関しては、引き続きSNS Count Cacheを使用しますので、当面は二重の運用です。
ただ、「Step by Step Social Count Cache」は今のところ非常に安定して動いているので、しばらくはこちらを使うことになりそうです。
ぜひ同じ悩みを抱えている方は、お試しくださいね!