【解決済】sns count cacheで facebookがカウントされないn/a問題(ssl化の引き継ぎ)

サイトのssl化に伴い、 facebookのいいねがゼロになりました。sns count cacheを利用する方法、他にも正攻法で「いいね!」数を引き継ぐ方法があります。覚書もかねています。

sns count cacheで facebookがカウントされないn/a問題

app idまで入力するところまでできている前提で話を進めます。

class-scc-share-facebook-strategy.phpのカスタマイズ

includes/class-scc-share-facebook-strategy.phpをカスタマイズします。

ctrl+f(Macはcommand+f)で探すコードは次のとおりです。

$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'];

もうひとつ書き換えます。

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;
}

以下のように書き換えます。

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

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

昔は下記のコードを使ってうまくいっていましたが、PHPのバージョンを変更したせいかうまくいかなくなりました。warningエラーが発生するようになりました。PHPのバージョンはPHP7.2.6です。結構、余談ですけど、レンタルサーバーはエックスサーバー、テーマはsimplicityです。

if ( isset( $content['data'] ) && empty( $content['error'] ) ) {
  $json = json_decode( $content['data'], true );
 
  $reaction = (int) $json[‘engagement’][‘reaction_count’];
  $comment_count = (int) $json[‘engagement’][‘comment_count’];
  $share_count = (int) $json[‘engagement’][‘share_count’];
 
  $count = $reaction + $comment_count + $share_count;
} else {
  $count = (int) -1;
}

sns-count-cache.phpのカスタマイズ

sns-count-cache.phpの下記の行をコメントアウトします。検証したところ、コメントアウトしないとシェア数が取れませんでした。

// Pocket and Google+, Linkedin are excluded from migration target because they are migrated automatically.
$this->scheme_migration_exclude_keys = array(
	//self::REF_SHARE_POCKET,
	//self::REF_SHARE_GPLUS,
	//self::REF_SHARE_LINKEDIN,
	//self::REF_FOLLOW_TWITTER,
	//self::REF_FOLLOW_FACEBOOK,
	//self::REF_FOLLOW_PUSH7,
	//self::REF_FOLLOW_INSTAGRAM
);
スポンサーリンク

電子書籍のおすすめ比較

sns count cacheで facebookがキャッシュされない問題

キャッシュするためには時間がかかりますので、1ページだけ手動でテストするのが早いです。

  1. SNS Count Cache > 設定 > キャッシュ消去
  2. SNS Count Cache > キャッシュ状況 > 個別ページ一覧が表示されるため「キャッシュ」のボタンを押す(もちろん、いいねがある記事でテストします。)
スポンサーリンク

(追記)facebookいいねが再びゼロに!facebookアプリのレート制限にも注意

実はいいねが回復したのち、facebookのいいねが再びゼロになる症状に悩まされていました^^;

手動キャッシュは正しくfacebookいいねを取得しているのに、全ページを行うとゼロになってしまうのです。どこかでコケているなと。

結論からいうと、facebook devloperにログインすると、レート制限にひっかかっていることが判明しました。

自分が作ったアプリの次の場所をみます。

ダッシュボード > アプリレベルでのレート制限の履歴

レート制限にひっかかっている場合、警告メールが届いています。

アラート > 受信箱

「アプリ名」が時間レート制限100%に達しました。 アプリに対するAPIコールは、アプリがスロットリング制限を下回るまですべて失敗します。(中略)3日後にアプリにまだレート制限がかかっている場合は、またアラートが送信されます。

詳しくはこちらです。

グラフAPIで実行できるさまざまな操作についての詳細

たしかにSNS Count Cacheの初期設定だと、制限にひっかかりそう。以前、さくらインターネットというサーバーで、このプラグインによる負荷トラブルもあったので。。

仮で10分に20回から10分に2回にしました。10倍時間がかかりますが、この負荷なら大丈夫でしょう。どうしても早めにいいねを戻したいページは、個別で手動キャッシュをしてしまいましょう。

カスタマイズがよく理解できない人は!?

カスタマイズがうまくいかない人は長い目でみるとプログラミングの学習が必要かもしれません。コードを読むことができなければ永久に悩み続けることになってしまうでしょう。

無料体験や数千円の動画教材もあるため、まずはそこからはじめるとよいでしょう。

オンラインのプログラミングスクール比較/おすすめで安いのは?エンジニア初心者のプログラムの学習サイト
エンジニア・プログラマーになりたい人のために、プログラミングスクールやサイトはどこがいいのかをまとめてみました。 個人的にはブログを...

少し勉強するだけでブログ運営はだいぶ楽になりますよ。

スポンサーリンク

sns count cacheは更新されていないから、正攻法でfacebookいいねを引き継ぎする方法

sns count cacheは1年以上更新されていないため、今回正攻法でいくかsns count cacheをごまかしながら使い続けるかちょっと悩みましたが、個人的にはsns count cacheはいろいろな意味で便利なため、ごまかしながら使い続けることにしました^^;

なので、以下の方法は試していませんけど、ざっくりと調べたため情報提供だけしておきます。

ssl化に伴い、facebook developersの公式サイトもアナウンスしています。

もう少し平易だといいのですけど。。

何を言っているのか意味不明な人のために、簡単に噛み砕いた記事がいくつかありましたので、紹介しておきます。

SSL化(httpからhttpsにする)後、SNSのカウントを新旧URLで合算したいと思う人は多いと思う。 でもそれを実現するには、今のところ、WordPressのプラグイン「SNS Count Cache」を使って、キャッシュを活用して合算するくらいの方法しかないのが現状だ。 この方法なら、はてブもfacebook...

ここまでみても難しい人はプログラミングの学習をするなど基本的なITスキルを磨く必要があるかもしれません。

オンラインのプログラミングスクール比較/おすすめで安いのは?エンジニア初心者のプログラムの学習サイト
エンジニア・プログラマーになりたい人のために、プログラミングスクールやサイトはどこがいいのかをまとめてみました。 個人的にはブログを...

本もありますよ!

WordpressのPHP書籍・動画・Kindle Unlimitedの本でおすすめは?
PHPをWordpressで使う場合、おすすめの書籍(Kindle Unlimitedを含む)や動画をまとめていきます。 初心者向けの...
スポンサーリンク

フォローする

スポンサーリンク