Facebookシェア数が0と表示されれてしまう
以前、Simpilicity2でFacebookのシェア数が表示されなくなった際にこちらの記事の対策を行いました。
これでシェア数が表示されるようになるのはなったのですが、シェアされていたはずの記事が0になることがときどきありました。ときどきと言うより、しょっちゅうの方が正しいですが。
原因
調べてみると、どうやら、Facebook側へのアクセス数が多すぎて性げされているようだということがわかりました。
ご覧のとおり、100%に張り付いている時間がものすごく長いです。このときはアクセスが拒絶されるためシェア数を取得できず、結果、0と表示されてしまうわけです。
長いことその解決方法がわからずに放置していたのですが、ようやくわかりました。上のグラフで数日前からアクセスが激減して落ち着いているのがその対策を取った後です。
設定方法
以下、そのやり方を説明します。
ざっくり言うと、Simplicity2でFacebookにアクセスすることは止めて、代りに、SNSシェア数を取得するプラグインにそれを任せます。そのプラグインでは定期的に各SNSシェア数を集めにいき、それをキャッシュしてくれます。Simplicity2はそのキャッシュデータを参照するという仕掛けです。ちょっと難しいですかね?難し話は置いておいても、以下の手順のようにやれ大丈夫です。
Simplicity2の設定
まず、Simpilicity2の設定を行います。より正しく言えば、Facebookシェア数の取得の設定を止めます。
テーマのカスタマイズのSNSのところを開きます。
表示させたいボタンにチェックを入れます。
Twitterのツイート数を表示させたい場合はここにもチェック。別途設定が必要になりますが、それは後述。
Facebook関連は空にします。まだ入れていなければそのまま空欄のままで。
ボタンの形状などのカスタマイズ項目もありますので、それはお好みで。
Simplicity2の設定は以上です。
プラグインのインストール
SNS Count Cacheというプラグインを使います。
説明は英語ですが、作者は日本人の方のようです。インストールして有効化します。
設定画面の「設定」タブを開きます。
対象とする、つまり、シェア数を取得したいSNSにチェックを入れます。
他の項目は既定値で良いと思います。上の設定で、900秒(15分)ごとにシェア数の取得を行います。一度取得で対象にする記事数は15です。
Facebook関係の設定を行います。
App ID、App Secretは以前取得したものをそのまま使えば大丈夫だと思います。未取得なら、こちらの記事を参考に取得してください。
Access Tokenの欄は最初は表示されていません。App IDとApp Secretを入力して「設定の更新」ボタンを押すと自動で表示・入力されます。
Twitterのツイート数も取得したい場合は、この設定も行います。
「登録先」のところのURLはクリックできるようになっています(見た目ではわかりませんけど)。サービス提供元は日本の会社ですので、説明は日本語です。
「サイト登録申請」ボタンを押し、指示に従ってください。申請が通ると、メールで連絡が来ます。その際、案内にもありますが、一日ないし二日ほどかかります(多分、営業日数で)。設定作業はこのまま進めても大丈夫です。申請が通るまではTwitterのツイート数が取得できないだけですので。
申請が通ると、こういうメールが来ます。
ユーザベージにアクセスしてTwitterと連携させておくと、情報取得のスピードが上がるそうです。
設定は以上です。
このプラグインを入れると、Simplicity2側で自動認識してくれるようです。Simplicity2側には特段の設定はありません。ただし、Simplicity2側のFacebook関連の設定を空欄にするのを忘れないように。そうしないと、Simlicity2もFacebookシェア数を取得しに行ってしまい、これまでと変りません。それどころか、このプラグインも取得に行くため、余計にアクセス数が増えてしまい、状況が悪化します。気をつけるポイントはここです。
結果、上に示したグラフのように、Facebookアプリとしてのアクセスが減少します。
SNS Count Cacheによるキャッシュ状況や取得したシェア数の確認は管理画面でできます。
このタブを切り替えれば見られます。
最終的に、こんな具合に、ちゃんとシェア数を表示できるようになりました。