どうも、癒せるブログサポーターがみたかです。
この記事にアクセスしていただいたということは、https(SSL)化したことで、Facebookのシェア数が0のままカウントされなくなったのでしょうか?

カウントが消えてしまったFacebookのシェア数

正常にカウントされているFacebookのシェア数
獲得したシェア数がhttps(SSL)化によってリセットされるだけならまだしも、それ以降もカウントしなくなるのはなんとも悲しいです。

厳密にはhttps(SSL)化とシェア数カウントの因果関係は少ないのですが、これがきっかけでカウントしなくなった(SSL化やスポットサポートの)クライアントさんがいらっしゃるようなので、その解決方法について解説しようと思います。
ただし、Wordpressはユーザーの環境に大きく左右されるシステムのため、必ず解決できるとは限りません。その場合は個別に対応させていただきますので、お気軽にスポットサポートにお申し込みください^^
この記事の目次
https(SSL)化後にFacebookのシェア数がカウントされなくなった時に確認する3つのポイント
https(SSL)化をした後で、Facebookのシェア数がカウントされなくなってしまった時に、まずはこの3つを確認及び試してみてください。
おそらくこれで9割は復旧(シェア数のカウント+http時代のシェア数引き継ぎ)ができると思います。

ポイントその1:『SNS Count Cache』のスキーム移行モードを有効にする。
これは定番で、どのサイトでもhttps(SSL)化の仕上げとして紹介されていると思いますが、念のため…
1.「SNS Count Cache」→「設定」をクリック。

2.「HTTPからHTTPSへのスキーム移行モード」を「有効」にして「設定の更新」をクリック。

通常は、この設定だけでhttp時代のシェア数を引き継ぎ、https後のシェア数をカウントしていくはずですが、

という怒りの声が聞こえそうなので、ひとまず次のポイントに行きましょう(^_^;)


ポイントその2:FacebookのAPI(アプリ)バージョンが2.8以下になっているか確認する。
おそらく『SNS Count Cache』でFacebook設定をする時に、アプリを作って「App ID」と「App Secret」をFacebook開発者向けページからコピペしたことだと思います。
詳しい話は専門的すぎるので後で書くとして、確認の手順を書いて行きます。
1.Facebookにログインし、『Facebook開発者向けページ』にアクセスする。
2.「マイアプリ」をクリック。

3.該当するアプリ(この場合は「シェア数カウント」)をクリック。

4.「APIバージョン」を確認する。

Facebookのシェア数がカウントされない場合は、おそらくこのAPIバージョンが「v2.9」より新しいはずです。
ただ、困ったことにこのアプリは新規で旧バージョンを作ることも、既存のものをダウングレードすることができません。
そのため手持ちのアプリにv2.9以下のものがない場合、
- プラグイン『SNS Count Cache』のアップデートを待つ。
- 僕の手持ちのアプリを使って設定する。
v2.9以降の変更点は情報として公開されているのでアップデート待つのも良いですが、すぐに復活させたい場合は後者の方法で『スポットサポート』にて対応させていただきます^^
旧バージョン(v2.8以下)を持っていた場合は、そのまま読み進めてください^^
5.旧バージョン(v2.8以下)の「アプリ ID」と「app secret」(表示させたもの)をコピーする。

6.「SNS Count Cache」→「設定」と開く。

7.「シェア基本キャッシューFacebook」にある「App ID」「App Secret」にそれぞれ貼り付けて「設定の更新」をクリック。

8.全てのカウントが「N/A(キャッシュされていない状態)」になるので、「キャッシュ状況」のタブを開き、「キャッシュ」をクリックすると強制的にキャッシュを取得します。

(画像は取得後の状態になります。)
9.キャッシュを取得すると、少しFacebookのシェア数が復活すると思います。

しかし、この状態はhttps(SSL)化以降のシェア数になります。
ブログ開設と同時にhttps(SSL)化している場合はそれでも良いのですが、http時代のシェア数がある場合、できれば合算したいのがブログ運営者というもの。
次のポイントでhttp時代のシェア数も取得しましょう!
ポイントその3:プラグインファイル「sns-count-cache.php」を編集する
ここも詳しい解説はあとにして、まず手順を書いていきます^^
1.「プラグイン」→「プラグイン編集」をクリック。

2.右上のドロップダウンから「SNS Count Cache」を選び「選択」をクリック。

3.『sns-count-cache.php』が開くので「scheme_migration_exclude_keys」をページ内検索する。

「Ctrl+f」(Macは「command+f」)でページ内検索ができ、画像の場所は2つめの場所になります。
4.該当箇所を「//」の追記で無効化(コメントアウト)する

必ず「ファイルを更新」で保存してください^^

5.「SNS Count Cache」→「設定」を開き、キャッシュを消去する。

6.「キャッシュ状況」のタブを開き、「キャッシュ」をクリックして取得する。

7.これでhttp時代のシェア数とhttps(SSL)化以降のシェア数が合算されて表示されるようになります。

ただし、冒頭で書いたようにこの環境によってはシェア数が取得されない場合がありますので、その時は「スポットサポート」にお任せください^^
興味があれば続きの復活までの経緯と解説も読んでください^^
シェア数を取り戻すまでの経緯と参考サイト
かなり専門的な案件なので、当然僕1人では解決できなかったので、先人の知恵として参考にさせていただいたサイトと、Google先生に感謝です^^
ここからは専門的すぎるので、ユーザー目線を無視したややテキトーな説明になるので、ここでこのページを閉じてご自身のブログを修正しに戻っていただいても結構です^^
シェア数を表示されなくなる理由
Facebookでシェアした記事(URL)は記事ごとにFacebookのデータベースに保存され、URLが載った投稿に「いいね!」されたり、コメントがついたり、シェアされたりすると、カウントが増えていくのだと思います(たぶんw)
それぞれのURL情報は、「シェアデバッガー」で確認することができます。
そのため、https(SSL)化すると「s」が付いただけとはいえ、URLが変わことになるので、見た目上のカウントがゼロになってしまいます。
「http://ドメイン.com」→「https://ドメイン.com」
そこで、シェア数がなんとか引き継げないか?となった時に、プラグイン『SNS Count Cache』が便利なので、多くの人が使っているんじゃないかなと思っています。


それはどっちでもいいけどw
また、「シェア数が表示されなくなる」というのは、システムのバージョンアップに伴い、何らかの理由(コードの記述的な部分)で現状では対応できなくなることで、
「データベースから必要な情報(シェア数)を取り出せなくなることによって起こる」
のではないかと思われます。
では、それらを踏まえた上で、各ポイントについて書いていこうと思います。
ポイント1の経緯と解説(『SNS Count Cache』の「httpsへのスキーム移行モード」について)
『SNS Count Cache』にある「httpsへのスキーム移行モード」というのは、httpのシェア数を取得しつつ、https(SSL)化より後で獲得したシェア数を、合算して表示させるモードになります。
これは多くのサイトで解説されているのですが、「とりあえず有効にしといたらOK」ぐらいに考えてたらいいと思いますw
ポイント2の経緯・解説と参考サイト(Facebook apiバージョンについて)
詳しい説明は専門的すぎるので割愛しますが、
「APIバージョンが「v2.9」より新しいと『SNS Count Cache』の仕組み上、対応できなくなってしまうためFacebookのシェア数がカウントできなくなる」
というのが直接的な原因だそうです。
もちろん、v2.9以降でどのようにすればシェア数を取り出せるか?という情報はあるので、プラグインをカスタマイズすればシェア数を取得することができるようになると思います。


この時に参考にさせていただいたサイトはこちら。
→WordPress プラグイン「SNS Count Cache」で Facebook のシェア数が取得できない理由は API バージョン|雑記BOOOKS 様
この方もヒントにされた下記のツイートで、今回の「Facebookのシェア数が表示しない事件」に光が差し込んだのは間違いありませんw
メモ:SNS Count Cache 0.11.1でFacebookのカウントが取れないときはAPIバージョンを確認。2.9ではだめで2.7のアプリIDに変えたら動作した。でも新規で旧バージョンのアプリは作成できないから困りものだね
— Kさん@まいぺーす() (@mypacecreator) 2017年5月19日
実はこのツイートにも続きがあって、
メモ:SNS Count Cache 0.11.1のHTTPS移行機能は結局有効化してもHTTPSのいいね数しか取得できないのでHTTP時の値はエクスポート→キー名を変えてインポートして足し算した。詳細はブログにしたら需要ありそうだけど説明が超面倒。
— Kさん@まいぺーす() (@mypacecreator) 2017年5月20日
どういうことかというと、
- 一度ブログをhttpに戻してシェア数を取得し直す。
- 『SNS Count Cach』のデータをcsvにエクスポートする。
- 再度ブログをhttpsにしてからデータ内にある「http」を「https」に書き換えてインポート。
- シェア数復活!ヽ(゚▽^*)乂(*^▽゚)ノ バンザーイ♪
あああ!!めんどくせぇぇぇ!!ノ ゚Д゚)ノ ==== ┻━━┻
とはいえ、試しに少しだけhttpのデータをエクスポートして試したものの、なぜか上手くいきませんでした(^_^;)
まあ、この方法ですと「キャッシュを削除」するとその都度http時代のデータをインポートする必要があるかもしれないで、全然実用的ではありませんね(^_^;)

さらに専門的な話になりますが、v2.9以降とv.2.8以前の違いは、Facebook側で決めた「シェア数を読み込むためのコード」です。
GET {url}のshareフィールドは削除されました。代わりに、engagementフィールドが追加されました。
FacebookGraph API 更新履歴より
このように、v2.8までは[share]で読み込んでいたものがv2.9から[engagement]と全く別の名前になってしまったので、v2.8までしか対応していない『SNS Count Cache』が「そんなフィールドねぇよ」となり、シェア数がカウントされなくなったんだと思います。
しかし、この辺りを上手く置き換えるカスタマイズができれば、v2.9でもFacebookのシェア数をカウントすることができるかと思っています。

ポイント3の経緯・解説と参考サイト(http時代のシェア数取得)
ポイント2でのhttp時代のシェア数取得に失敗(諦めた)僕が次に見つけて参考にさせていただいたサイトはこちらです。
このサイトによると、「sns-count-cache.php」で「//」を追記した部分というのは、
これは「公式の方がhttpからhttpsにシェア数を引き継いでくれるサービスに関しては、こっちではhttpとhttpsの両方からは取得しないよ」的な設定です。
引用:あかつきのお宿より
とのことで、通常httpかhttpsのどちらか片方しかシェア数を取得できなかったものを、コードに「//」を入れて無効化することで、httpとhttpsの両方から取得してくれるようになるみたいです。
参考サイトには「2倍に水増しできちゃうかも?」と書かれていましたが、こちらで作業した環境では大丈夫だったので、僕の書いた記事どおりの手順だとhttp時代のシェア数を引き継ぎつつ、https(SSL)化以降のシェア数をカウントしてくれる仕様にうまくできたのではないかと思います^^
https(SSL)化で失ったFacebookのシェア数を復活させる方法:まとめ
なにはともあれ、https化によってFacebookのシェア数が0(ゼロ)になってカウントしなくなった時は、この3つを試してみてください。
- プラグイン「SNS Count Cache」の「httpsへのスキーム以降モード」を有効にする。
- Facebookアプリで、apiがv2.8以下のものを使う。
- 『sns-count-cache.php』にある「self::REF_FOLLOW_FACEBOOK,」に「//」を追記する。
これで9割はFacebookのシェア数が正常に取得できるようになると思います^^
常時SSL(https)設定サービスでは、オプションではありますが、シェア数の復旧もできる限り行なっています!
うまくできるか不安であれば、サクッと任せていただいた方が良いかと思います^^

それでは、今回はこの辺で!また次の記事でお会いしましょう^^