SSL化でFacebookいいね数を引き継ぎたい!時の方法【WordPress】【PHP】
SSL化すると「いいね!」数が…リセット!?
Webサイト全体をSSL化するのは今や当たり前となっていますが、その時に一つ困ることが。
各ページのFacebookの「いいね!」数がリセットされたようにゼロになってしまうのです。
これはhttpのURLとhttpsのURLを「別物」としてFacebookで扱うためです。
httpの時の言い値数は残っていますので、httpとhttps移行後の「いいね!」数を合算して表示する方法を解説します。
Graph APIでいいね数を取得してみよう
まず一番簡単な取得方法を試してみましょう。
https://graph.facebook.com/?id=[いいね数を取得したいURL]
これで取得できます。
例えばYahoo!であれば、
https://graph.facebook.com/?id=http://yahoo.co.jp
で取得できます。これはhttpでの数字ですね。
jsonで以下の通り返ってきます。
{"share": {"comment_count": 2,"share_count": 50492},"og_object": {"id": "10150152648618567","description": "\u65e5\u672c\u6700\u5927\u7d1a\u306e\u30dd\u30fc\u30bf\u30eb\u30b5\u30a4\u30c8\u3002\u691c\u7d22\u3001\u30aa\u30fc\u30af\u30b7\u30e7\u30f3\u3001\u30cb\u30e5\u30fc\u30b9\u3001\u5929\u6c17\u3001\u30b9\u30dd\u30fc\u30c4\u3001\u30e1\u30fc\u30eb\u3001\u30b7\u30e7\u30c3\u30d4\u30f3\u30b0\u306a\u3069\u591a\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5c55\u958b\u3002\u3042\u306a\u305f\u306e\u751f\u6d3b\u3092\u3088\u308a\u8c4a\u304b\u306b\u3059\u308b\u300c\u8ab2\u984c\u89e3\u6c7a\u30a8\u30f3\u30b8\u30f3\u300d\u3092\u76ee\u6307\u3057\u3066\u3044\u304d\u307e\u3059\u3002","title": "Yahoo! JAPAN","type": "article","updated_time": "2018-09-20T07:23:56+0000"},"id": "http://yahoo.co.jp"}
"share_count": 50492
の50492がhttpでのいいねの数です。
次に、httpsでのいいね数も取得してみましょう。
https://graph.facebook.com/?id=https://yahoo.co.jp
で取得してみます。
{ "share": { "comment_count": 0, "share_count": 46074 }, "og_object": { "id": "10150152648618567", "description": "\u65e5\u672c\u6700\u5927\u7d1a\u306e\u30dd\u30fc\u30bf\u30eb\u30b5\u30a4\u30c8\u3002\u691c\u7d22\u3001\u30aa\u30fc\u30af\u30b7\u30e7\u30f3\u3001\u30cb\u30e5\u30fc\u30b9\u3001\u5929\u6c17\u3001\u30b9\u30dd\u30fc\u30c4\u3001\u30e1\u30fc\u30eb\u3001\u30b7\u30e7\u30c3\u30d4\u30f3\u30b0\u306a\u3069\u591a\u6570\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u5c55\u958b\u3002\u3042\u306a\u305f\u306e\u751f\u6d3b\u3092\u3088\u308a\u8c4a\u304b\u306b\u3059\u308b\u300c\u8ab2\u984c\u89e3\u6c7a\u30a8\u30f3\u30b8\u30f3\u300d\u3092\u76ee\u6307\u3057\u3066\u3044\u304d\u307e\u3059\u3002", "title": "Yahoo! JAPAN", "type": "article", "updated_time": "2018-09-20T07:23:56+0000" }, "id": "https://yahoo.co.jp"}
"share_count": 46074
と、httpsでのいいね数は46074だとわかりました。
httpでの50492とhttpsでの46074の合計、96566が、合算された数字になります。
これをPHPで取得して合算表示すればよいわけですが、実はこれだとうまく合算された数字が表示できない事が多くなります。
また、実は最新のGraph APIではこの手法では取得できません。
Graph API2.9からは、”share”のフィールドが利用できなくなっているのです。
そこで、安定して取得できるよう2.9以降対応とし、アクセストークンを利用してみます。
Graph API2.9を使って、いいね数を取得してみる
結論から行きますね。
https://graph.facebook.com/?id=[取得したい自分のサイトのURL]&fields=og_object{engagement},engagement&access_token=[アクセストークン]
2.9以降はこれで取得します。
実際に数字を取得するPHPコードは以下の通り
//いいね数を取得したいページのURL$url_https = get_the_permalink();$url_http = str_replace( 'https://', 'http://', $url_https );$access_token='ここにアクセストークン';//JSONデータ取得$json_data_https = file_get_contents("https://graph.facebook.com/?id=". rawurlencode($url_https) . "&fields=og_object{engagement},engagement&access_token=$access_token");$json_data_http = file_get_contents("https://graph.facebook.com/?id=". rawurlencode($url_http) . "&fields=og_object{engagement},engagement&access_token=$access_token");$arr_https = json_decode($json_data_https, true);$arr_http = json_decode($json_data_http, true);// httpsのいいね数が存在する場合if (isset($arr_https['og_object']['engagement']['count'])) {$facebook_cnt_https = $arr_https['og_object']['engagement']['count'];}// httpsのいいね数が存在しない場合else {$facebook_cnt_https = 0;}// httpのいいね数が存在する場合if (isset($arr_http['og_object']['engagement']['count'])) {$facebook_cnt_http = $arr_http['og_object']['engagement']['count'];}// httpのいいね数が存在しない場合else {$facebook_cnt_http = 0;}$total= $facebook_cnt_https+$facebook_cnt_http;echo $total;
$totalが合算された数字になります。
カテゴリ:Web制作
タグ:Facebook,Graph API,json,SSL化,いいね数