snscountcacheでtweet数が反映できない 解決編

WPのSNS count cacheでTweet数反映に手こずった件

Pocket

こんにちは!今日は、先日からサイト制作等を進めている中でWordPressのプラグイン「SNS-count-cache」にて、ネット情報を基にTwitterのツイート数を反映をさせようとし出来なかった理由と解決方法を見つけたのでメモがてら綴っておきます。

ワードプレスの情報ってたくさん出ているので、とりあえず調べてソースコピペでペッと出来る事多くなりましたよねー。

しかし、だからこそハマってしまう罠もあるんだなと今回実感しました。本件に関しては僕が解決できた方法のみを記載していますので、他の記事をディスっている訳でもありませんので予めご了承下さい。

※2016年6月時点で新しいバージョン0.9.0が公開されています。こちらにアップデート、またはインストールすることでカスタマイズ等も不要でTweet数が表示出来る様になりました!

どこのブログを見ても見つからなかったハマったポイント

まず、今回何をしようとしたかという部分に関してですが、自分でオリジナルのSNSシェアボタンとカウント数を表示させ、尚且つ重くならない様にしたいという事で、sns count cacheプラグインへたどり着いたのです。

そして、昨年の11月頃にTweet数が公式ウィジェット等では反映されなくなった事もあり、今回は数値も取得できる様にしておこうという事で、count.jsoonにも登録したんです。

上記に関しては、僕なんかが生意気にブログで書く事も無いのでハショって行きます!

しっかりと説明されている以下のブログ様(寝ログさん)が参考になるかと思います。

廃止されたTwitterの「シェア数付きボタン」を表示させる方法、「count.jsoon」の基本的な使い方

それでは、本題に進みましょう。

何回やってもTweet数が反映できない

色々なブログを見ても、count.jsoonは登録済みが前提でsns count cacheのプラグイン内にある「class-share-crawler.php」をチョチョッペッとするだけで簡単にツイート数が復活できると書いてあったのですが。。。。

numb_classsharecrawler_php

何度やってもできずorz

ちなみに以下の部分を書き換えましょうというのが、そこらじゅうに転がっている情報です。

プラグインフォルダ内のにある(sns-count-cache/includes/class-share-crawler.php)の155行目です。

if ( isset( $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) && $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) {
$query_urls[SNS_Count_Cache::REF_SHARE_TWITTER] = 'http://urls.api.twitter.com/1/urls/count.json?url' . $url;
}

上記のURL部分(http://urls.api.twitter.com/1/urls/count.json?url)を以下URL(http://jsoon.digitiminimi.com/twitter/count.json?url)に置き換えるという方法です。

if ( isset( $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) && $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) {
$query_urls[SNS_Count_Cache::REF_SHARE_TWITTER] = 'http://jsoon.digitiminimi.com/twitter/count.json?url' . $url;
}

※上記は反映できなかったコードです。

ところが、上記で試したところ僕の環境では一切数値を反映させる事ができず、SNS count cacheの設定画面でもTwitterの反映状況はN/Aのまま。。。

とりあえず諦めようかなとも思っていたのですが、count.jsoonのサイトでもTweet数の取得もできているのに、ここでやめたら何か悔しい。。。という事で解決まで頑張りましたw

tweet数をプラグイン使って反映させるまでの流れ

これはプラグインが原因だと思い、普通にfunction.php使ってソースに直反映でどうだろう?と思いやってみました。

すると、すぐにTweet数が反映されたので全く問題ない状態でした。

やっぱりWordPressのプラグイン側の問題なのか?でもみんなこれで出来るって書いてるし。。。普段のおこないが悪いから。。。これは呪いだ!

と思いつつ、先ほど試した方法で一点気になる事があり、それを試したところ出来たんです!!

1文字が足りなかっただけで。。。簡単に解決

function.phpに書いた時の以下のURLを見て下さい。

※寝ログさんで紹介されていたコードです。

//count.jsoonからTwitterのツイート数を取得
function fetch_twitter_count($url){
  $url = rawurlencode( $url );
  $subscribers = wp_remote_get( "http://jsoon.digitiminimi.com/twitter/count.json?url=$url" );
  $res = '0';
  if (!is_wp_error( $subscribers ) && $subscribers["response"]["code"] === 200) {
       $body = $subscribers['body'];
    $json = json_decode( $body );
    $res = ($json->{"count"} ? $json->{"count"} : '0');
  }
  return $res;
}

おやおや?よーく見てみると、function.phpに書いた4行目のURLには最後に=(イコール)が付いているではないか!?

もしかして・・・と思い、最初の手順にもどって「class-share-crawler.php」の他snsのURLを確認してみると、Facebook等もURLの最後尾に=がついているパターンもあったり。

という事でTwitterの部分にてurlと記した後ろに「=」を追加してみました。

以下の様なコードになりますが。

if ( isset( $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) && $target_sns[SNS_Count_Cache::REF_SHARE_TWITTER] ) {
$query_urls[SNS_Count_Cache::REF_SHARE_TWITTER] = 'http://jsoon.digitiminimi.com/twitter/count.json?url=' . $url;
}

※上記は反映できたコードです。

numb_snscountcache_dashbord

これですぐにプラグインの数値を取得するやり方にて反映できました。めでたしめでたし!

SNS count cacheで他の記事通りにしたものの、Tweet数が反映できない時の対応法まとめ

簡単に解決できたことなのですが、他ブログ等を見る限り末尾に=(イコール)が必要だという情報を書いているものは、見つかりませんでした。

僕だけの環境にて、このイコール問題が発生していたのかもしれないので、他の方はこれがなくてもいけてるのかもしれませんねw

同じような問題で、めんどくさくなったからTweet数を反映させていない方が居ましたら、この記事が参考になれば幸いです。

このブログに関して言うと、ここまで記事にしておきながらSNS count cacheは使ってませんwでも速いのでオススメです。

いっその事プラグインを自分で作るorプラグイン無しでsnsボタンを実装するのもありかも

最近は、ワードプレスのプラグインやテーマ等もご自身で制作されるフロントエンドエンジニアタイプの方が増えていますよね!

これからそうなることを目指しているWEBデザイナーの方も多いかと思いますが、以下の参考書籍等が読みやすくてオススメです!

WordPress 仕事の現場でサッと使える! デザイン教科書 (Webデザイナー養成講座)

基本部分含め僕ももっと精進します。。。

最後まで読んで頂きありがとうございます!

当サイトでは、どの様な方々がページを見て頂いているのかアンケートを取らせて頂いており、今後の情報発信の参考にさせて頂ければと思っております。

是非、投票をお願い致しますm(_ _)m

あなたの職業を教えてください!

回答結果を見る

Loading ... Loading ...

また、記事をいいねして頂いたり、ぶっくまーくして頂くと個人的に喜びます。

Pocket

Comments