WordPressのいいね数キャッシュプラグイン SNS Count Cacheが抱える問題に立ち向かう – 運営堂サイト裏話(2)

常時HTTPS化に伴うシェア数の移行に試行錯誤…

運営堂さんサイトリニューアルにあたって苦労したところを書き残しておくシリーズの2つ目です。
今回、リニューアル・サーバ移転にあわせて、常時HTTPS化をすることになりました。
森野さんとは、昨年からずっと「折を見てやりましょう」という話をしていたのですが、結局あれもこれも変えたいね、となって今回のリニューアルに至ったわけです。

さて、HTTPS化にあたってよく言われるのが、SNSのシェア数がリセットされてしまうこと。
これの対応について、WordPressの場合だと「SNS Count Cache」というプラグインを使う方法があります。

SNS Count Cache

このプラグインの説明については、検索してもらうと結構な数の記事が出てきますので詳細は割愛しますが、今回導入した目的は以下の2つです。

  1. 定期的にSNSのシェア数を取得し、カスタムフィールドに格納してくれる
    →自作したボタンに数字を表示できる。JSの読み込みが不要になるので表示高速化につながる。
  2. 「HTTPからHTTPSへのスキーム移行モード」というのがあり、HTTP移行前後のシェア数をよしなに合算してくれる

が、一見便利そうで人気もあるこのプラグインも万能ではなく、あまりに変化が早すぎるFacebook側のAPIの仕様変更に追随ができていないという問題があります。
今後のアップデートで変更があるかもしれませんが、2017年9月時点でSNS Count Cache (v0.11.1) が抱える問題にどのように対応したかを記録しておきます。

問題1. 最新バージョンのFacebook Graph API だと数値が取れないっぽい

このプラグインでFacebookのいいね数(※正確には「いいね」数と「シェア」数の合算)を取得するには、Facebook for developersのページから、アプリIDとapp secretを取得し、入力する必要があります。

Facebok API アプリID取得画面

が、IDとapp secretを入れてもいいね数が0から増えないという問題が発生します。
調査により、プラグインの仕様がGraph API の最新バージョン(2017年9月時点ではv2.10)に対応してないようだ、ということがわかりました。
以前他の案件でも、その時点での最新バージョンだったv2.9を使おうとして、同様の現象になりました。

そのため、過去バージョンのGraph API を使う必要が出てきます。
運営堂さんのサイトでは以前から使っていたv2.4のIDをそのまま使っています。
以前やった他の案件ではたまたま持ってたv2.7のIDを入れて動作させました。
v2.8のIDは持っていなかったので試していませんが、v2.9, v2.10では数値を取得できませんでした。

・・・私は普段からFacebook Graph API を使う案件をいくつもやっていたので過去バージョンのアカウントを用意できたのですが、残念ながら新規で過去バージョンのアカウントを作ることはできません。
ですので、今までGraph API を使ったことのない人がSNS Count Cacheを正しく動作させるには、プラグイン側がアップデート対応してくれるのを待つしかないようです。

※なお、Pocketとはてなブックマークの数値は正しく取れています。
Google+はいつのまにか公式でシェア数表示自体が廃止されているっぽかったのでOFFにしています。
PinterestとLinkedin、代替Twitter APIは使ってないので知りません。

2. 「HTTPからHTTPSへのスキーム移行モード」がFacebookで正しく動作しない

あれだけ期待された「HTTPからHTTPSへのスキーム移行モード」が、残念ながら稼働してくれません。取得できるのは、HTTPS移行後の数値のみ。
※なお、こちらもPocketとはてなブックマークの数値は正しく合算されています。
またFacebookかよ、としか言いようがありません。

ということで、Facebookの数値だけは何らかの方法でバックアップして、自力で合算してやらないといけません。
ここで活躍するのが、前回の記事でもご紹介した「WP CSV Exporter」プラグインと、「Really Simple CSV Importer」プラグインです。

手順

  1. HTTPS移行前、まだHTTPの段階でSNS Count Cacheを回し、全記事のいいね数を取得
  2. WP CSV Exporterプラグインで記事をエクスポート。このとき、最低限必要なのは以下の3項目だけなので、他の項目はチェックを外しておいてもOKです。
    • 投稿ID
    • 投稿タイプ
    • カスタムフィールドの”scc_share_count_facebook” 項目


  3. エクスポートしたCSVファイルを開き、先頭行のフィールド名 “scc_share_count_facebook” を別の名前に変更(今回は “scc_http_count_facebook” に)し、保存
  4. Really Simple CSV Importer で3.のCSVをインポート
  5. PHPテンプレート側で、SNS Count Cacheプラグインが取得した数値と、 “scc_http_count_facebook” フィールドの数値を足し算し、出力
  6. HTTPSへ移行し、SNS Count Cacheの数値取得を待つ

上記の手順で対応しています。
シェア数のエクスポート機能はSNS Count Cacheプラグインにも付いていますが、後からReally Simple CSV Importerでインポートすることを考えると、WP CSV Exporterでやったほうが良いです。

なお、5.のPHPテンプレート側はおおむねこんな感じになってます。

今後もFacebookの仕様変更で急に数値が取れなくなることもあり得ますので、こんな感じでシェア数をDumpして別のカスタムフィールドに格納しておくと、将来何か役に立つことがあるかもしれません。
(念のためPocket, はてなブックマークの数値も保存してあります)

コメントをどうぞ

メールアドレス (必須・公開されません)
コメント本文

  • スパム・迷惑コメント投稿防止のため、メールアドレスの入力が必須ですが、公開はされません。何卒ご協力のほどお願いいたします。
  • 投稿いただいたコメントは管理者のチェック後掲載しておりますので、即時には反映されません。
  • 記載内容に関する批判や間違いの指摘などはそのまま掲載する方針ですが、投稿内容と無関係な誹謗中傷、一方的な罵詈雑言の場合は削除させていただく可能性があります。
  • 通常業務の合間にコメントチェックをしておりますので、すべてのコメントへのお返事が出来ない場合もございます。あらかじめご了承ください。
  • 管理人個人への連絡等は、コメント欄ではなくコンタクトフォームをご利用ください。

書籍を執筆しました

WordPress 標準デザイン講座【Version 4.x対応】


翔泳社さんより、2015/02/27発売しました。2年経ちますのでもう賞味期限切れだとは思いますが、一応実績として...

寄付歓迎(・ω<)☆

当ブログの記事があなたの役に立ったら、気が向いたらでいいのでドネーションいただけると更新の励みになります!
気が向いた方はこちらから

ブログ内検索