お問い合わせはコチラから

【修正方法】SNS count cacheでFacebookのカウントが0になる【Cocoon】

サイト運営

この記事では、SNS count cacheを使っているのにFacebookのシェア数が全て0になる問題の解決方法が書かれています。

結論から言いますよ!

Facebookのシェア数が全て0になる人とならない人の違いは、Facebookアプリのバージョンの違いが影響していて、Facebook側での対応は不可。

対応は以下の何れかになります。

  • プラグインのソースコードを修正する(プラグインの正式版は0.11.1でバージョンアップは停滞)
  • ベータ版(0.11.2 Beta1)を手動インストールする

ベータ版のインストールは手動でFTPアップロードが必要なので、それが嫌な人はコピペで一瞬で終わる正式版のソースコード修正の方が簡単です。

2019/5/6 SNS count cacheの1.0.0がリリースされました。プラグインを普通に更新すれば特に何もやらなくてよくなりました。
https://logicore.cc/release-wordpress-plugin-sns-count-cache-ver-1-0-0-267/
SNS count cacheの1.1.1がリリースされましたが、バグがあるようです。
https://logicore.cc/bug-and-workaround-wordpress-plugin-sns-count-cache-ver-1-1-1-549/

SNS count cach導入の経緯

先日、LuxeritasからCocoonにWordpressテーマを変更しました。

Luxeritasはテーマの管理画面で各記事のSNSシェアのカウント数を一覧で確認できたのですが、Cocoonにはその機能がありません。

CocoonもSNS count cacheというプラグインを入れれば同じことができます。

SNS count cachでFacebookのシェア数が0になる

SNS count cacheプラグインをインストールしてもFacebookのシェア数のカウントが0にしかならない人がいます。

まず、APIのバージョンがv2.8以下であれば、おそらくSNS Count Cache 0.11.1のコードでカウント数が取得できると思います。
しかし、v2.9になるとそれができない。仕様が変わったことで、SNS Count Cache 0.11.1のコードでは対応できないのです。

しかもここで頭を悩ませられるのが、Facebookアプリで使用するAPIのバージョンは、前のバージョンを選択できないこと。
v2.9以前のバージョンでアプリを作っていれば古いバージョンを選べるようですが、v2.9でアプリを作ったらv2.9以上しか選択できないようです。

引用元https://www.islog.jp/entry/sns-count-cache-facebook/

私も最近Facebookアプリを作成したのでv2.9しか選べませんでした。

確かに、Facebookシェア数が常に0になりました。

SNS count cacheプラグインを停止してCocoonのSNSシェアカウント数を表示させると正常に表示されます。

SNS count cachでFacebookのシェア数が0になる対策

以下の記事に完全な修正方法が書かれています。

しかし、私には説明がよく理解できなかった(具体的にどこをどう直せばよいのかわからなかった)ので、同じ記事を参考に修正した方法が記載されている以下の記事を見て修正することにしました。

手順1 : includes/class-scc-share-facebook-strategy.phpを開く

FTPでプラグインをダウンロードして、ローカルで修正して再度アップロードしてもいいです。

FTPが面倒ということであれば、Wordpressの管理画面から修正作業します。

  1. WordPress管理画面を開く
  2. プラグイン => プラグインエディターと進む
  3. 編集するプラグインを選択で
    SNS count cacheプラグインを選択
  4. プラグインファイルで以下のファイルをクリック
    includes/class-scc-share-facebook-strategy.phpをクリック
  5. 修正箇所を変更して保存

手順2 : 79行目を変更

変更前

$url = self::DEF_BASE_URL . '?' . http_build_query( $this->query_parameters , '' , '&' );

変更後

$url = self::DEF_BASE_URL . '?id=' . rawurlencode( $this->query_parameters['id']) . '&fields=og_object{engagement},engagement&access_token=' . $this->query_parameters['access_token'];

手順3 : 89行目を変更

変更前

public function extract_count( $content ) {
SCC_Common_Util::log( '[' . __METHOD__ . '] (line='. __LINE__ . ')' );

$count = (int) -1;

if ( isset( $content['data'] ) && empty( $content['error'] ) ) {
$json = json_decode( $content['data'], true );

if ( isset( $json['share']['share_count'] ) && is_numeric( $json['share']['share_count'] ) ) {
$count = (int) $json['share']['share_count'];
} elseif ( isset( $json['id'] ) && ! isset( $json['share']['share_count'] ) ) {
$count = (int) 0;
} else {
$count = (int) -1;
}
} else {
$count = (int) -1;
}

return $count;
}

変更後

public function extract_count( $content ) {
SCC_Common_Util::log( '[' . __METHOD__ . '] (line='. __LINE__ . ')' );

$count = (int) -1;

if ( isset( $content['data'] ) && empty( $content['error'] ) ) {
$json = json_decode( $content['data'], true );

// if ( isset( $json['share']['share_count'] ) && is_numeric( $json['share']['share_count'] ) ) {
// $count = (int) $json['share']['share_count'];
// } elseif ( isset( $json['id'] ) && ! isset( $json['share']['share_count'] ) ) {
// $count = (int) 0;
// } else {
// $count = (int) -1;
// }

$reaction = (int) $json['engagement']['reaction_count'];
$comment_count = (int) $json['engagement']['comment_count'];
$comment_plugin_count = (int) $json['engagement']['comment_plugin_count'];
$share_count = (int) $json['engagement']['share_count'];
$count = $reaction + $comment_count + $comment_plugin_count + $share_count;
} else {
$count = (int) -1;
}

return $count;
}

0.11.2 Beta1のインストール

作者さんのサイトからダウンロードして、ローカルで展開した後にFTPでサーバーにアップロードすれば終わりです。

最初、アップロード時に上書き確認されたので、新しいファイルは上書きとしました。プラグインのバージョンを確認しても変化が無かったので、再度全て上書き更新にしたところ、バージョンが上がったのが確認できました。全て上書き更新にすると設定が消えてしまうのでFacebook アプリのIDなどは入れ直しになりました。

0.11.2 Beta1をインストールしたらFacebookのシェア数の取得ができるようになりました。

まとめ

Cocoonもプラグイン本体でSNSシェアカウントをキャッシュしているので、Luxeritasのように記事毎のSNSシェアカウント数を管理画面で確認できれば良いのですが、その機能は実装されそうな雰囲気はありません。

というのもSNS count cacheプラグインを昔から使っている人はFacebookアプリのバージョンがv2.9より前のバージョンを使っているので問題が起きず、特に困らないからだと思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました