SNSでのシェア数をキャッシュして高速表示できるWordPressプラグイン「SNS Count Cache」

SNSでのシェア数をキャッシュして高速表示できるWordPressプラグイン「SNS Count Cache」

SNSでのシェア数をキャッシュして高速表示できるWordPressプラグイン「SNS Count Cache」

SNS Count Cacheは、各投稿のSNSでのシェア数をキャッシュして、高速表示することができるWordPressプラグインです。

オリジナルのSNSボタンを設置している場合に、シェア数を表示することができます。

SNS Count Cacheのインストール

インストール手順は以下の通りです。

  1. SNS Count Cacheをダウンロードします。
  2. ダウンロードしたファイルを展開し wp-content/plugins にアップロードします。
  3. 管理画面の[プラグイン]ページで、SNS Count Cacheを有効化します。

SNS Count Cacheの設定

SNS Count Cacheの設定

[SNS Count Cache] – [設定]で、プラグインの設定を行います。

シェア基本キャッシュ機能

シェア基本キャッシュ機能では、SNS Count Cacheの基本設定を行います。

対象SNS シェア数を取得するSNS
カスタム投稿タイプ シェア数を取得するカスタム投稿タイプ
シェア数のチェック間隔 シェア数を取得する間隔
一度にチェックするコンテンツ数 一度にチェックする投稿数
HTTPからHTTPSへのスキーム移行モード HTTPからHTTPSへのシェア数引き継ぎ
HTTPからHTTPSへのスキーム移行日 SSL対応した日付

ちなみに、「一度にチェックするコンテンツ数」が多すぎると、Facebookアプリに「〇〇(アプリ名)が時間レート制限100%に達しました。 アプリに対するAPIコールは、アプリがスロットリング制限を下回るまですべて失敗します」といった警告が届く場合があります。

そのため、時間はかかりますが「一度にチェックするコンテンツ数」は既定値の”20″のままにしておくことをおすすめします。

シェア基本キャッシュ – Facebook

Facebookのシェア数を取得するためには、Facebook開発者向けページからアプリケーションを登録して、「App ID」と「App Secret」を取得する必要があります。

Facebook開発者向けページにアクセウしたら、[スタートガイド]をクリックします。

スタートガイド

[次へ]をクリックして進みます。

次へ

電話番号を入力して、アカウントの認証を実行します。

電話番号認証

認証が完了したら、最初のアプリを登録していきます。アプリ名は任意のものに変更してOKです。

アプリの登録

自分の職業に近いものを選択します。

職業の選択

[Add Your First Product]をクリックして、アプリのダッシュボードに移動します。

Add Your First Product

[設定] – [ベーシック]にアクセスすると、「アプリID」と「app secret(表示ボタンをクリックすると内容が表示されます)」が確認できるので、SNS Count Cacheの設定に戻ってそれぞれ入力します。それから、アプリのステータスを有効にする際に求められるので、「プライバシーポリシーのURL」も入力しておきましょう。

アプリIDとApp Secret

右上のチェックボタンをクリックして、ステータスをオンにしたらFacebookアプリ登録の完了です。

ステータスの変更

シェア基本キャッシュ – Twitter

Twitterのシェア数を取得するには、widgetoon.js & count.jsoonにサイトを登録する必要があります。[サイト登録申請]から、URLとメールアドレスを入力して登録申請を行います。

widgetoon.js & count.jsoon

サイト登録は2~3日で完了します。サイト登録が完了するとメールが送られてきますので、メール内のURLからユーザーページにアクセスすることができます。通常は取得期間が決まっていますが、Twitterアカウントと連携すると全期間のツイートを取得できるようになります。

Twitter連携

シェア臨時キャッシュ機能

シェア臨時キャッシュ機能では、新着記事のシェア数のキャッシュ機能を設定します。

投稿日からコンテンツを新着とみなす期間 新着とみなす期間
シェア数のチェック間隔 シェア数を取得する間隔
一度にチェックするコンテンツ数 一度にチェックする投稿数

シェア変動分析機能

シェア変動分析機能は、キャッシュ済みの投稿でシェア数が変動したかどうかをチェックする機能です。デフォルトでは無効になっていますが、「比較基準の更新方式」で機能を有効化できます。

フォロー基本キャッシュ機能

フォロー基本キャッシュ機能は、SNSのフォロー数をキャッシュする機能です。「対象SNS」と「フォロワー数のチェック間隔」を設定しましょう。

フォロー変動分析機能

フォロー変動分析機能は、フォロー数の変動をチェックする機能です。「比較基準の更新方式」で有効化できます。

動的キャッシュ機能

動的キャッシュ機能は、サイトに訪問者が訪れた時にシェア数の取得を行う機能です。有効にすると負荷が上昇するので、無効のままで良いかと思います。

フォールトトレランス機能

フォールトトレランス機能は、何らかの問題によってシェア数の取得が失敗した場合に、前回取得したシェア数をそのまま引き継ぐ機能です。「カウント取得における耐障害モード」の有効/無効を切り替えられます。

データクローラ機能

データクローラ機能では、「クロールの再試行上限」と「SSL証明書の検証」の設定を行います。

データエクスポート機能

データエクスポート機能では、データのエクスポートを自動化することができます。デフォルトは手動。

SNS Count Cacheでのシェア数・フォロー数の表示方法

SNS Count Cacheで取得したシェア数やフォロー数を表示する場合、以下のようなコードを記述します。

//Twitterでのシェア数
<?php if(function_exists('scc_get_share_twitter')) echo (scc_get_share_twitter()==0)?'':scc_get_share_twitter(); ?>

//Facebookでのシェア数
<?php if(function_exists('scc_get_share_facebook')) echo (scc_get_share_facebook()==0)?'':scc_get_share_facebook(); ?>

//Google+でのシェア数
<?php if(function_exists('scc_get_share_gplus')) echo (scc_get_share_gplus()==0)?'':scc_get_share_gplus(); ?>

//はてなブックマークのブクマ数
<?php if(function_exists('scc_get_share_hatebu')) echo (scc_get_share_hatebu()==0)?'':scc_get_share_hatebu(); ?>

//pocketへの保存数
<?php if(function_exists('scc_get_share_pocket')) echo (scc_get_share_pocket()==0)?'':scc_get_share_pocket(); ?>

//Pinterestでのシェア数
<?php if(function_exists('scc_get_share_pinterest')) echo (scc_get_share_pinterest()==0)?'':scc_get_share_pinterest(); ?>

//LinkedInでのシェア数
<?php if(function_exists('scc_get_share_linkedin')) echo (scc_get_share_linkedin()==0)?'':scc_get_share_linkedin(); ?>

//シェア数の合計
<?php if(function_exists('scc_get_share_total')) echo (scc_get_share_total()==0)?'':scc_get_share_total(); ?>

//Feedlyのフォロー数
<?php if(function_exists('scc_get_follow_feedly')) echo (scc_get_follow_feedly()==0)?'':scc_get_follow_feedly(); ?>

//Twitterのフォロー数
<?php if(function_exists('scc_get_follow_twitter')) echo (scc_get_follow_twitter()==0)?'':scc_get_follow_twitter(); ?>

//Facebookのフォロー数
<?php if(function_exists('scc_get_follow_facebook')) echo (scc_get_follow_facebook()==0)?'':scc_get_follow_facebook(); ?>

//Instagramのフォロー数
<?php if(function_exists('scc_get_follow_instagram')) echo (scc_get_follow_instagram()==0)?'':scc_get_follow_instagram(); ?>

//Push7のフォロー数
<?php if(function_exists('scc_get_follow_push7')) echo (scc_get_follow_push7()==0)?'':scc_get_follow_push7(); ?>

上記をオリジナルのSNSボタンの中に追加してあげることで、シェア数やフォロー数を表示することができます。なお、シェア・フォロー数が0の場合は何も表示しないようにしています。

キャッシュの状況やシェア数の確認

[SNS Count Cache] – [キャッシュ状況]では、キャッシュされたページが確認できます。

キャッシュ状況

また、[SNS Count Cache] – [シェア数]では、それぞれのページのシェア数が確認できます。

シェア数

Facebookのシェア数が取得できない場合

Facebookのシェア数が”N/A”や”0″になる場合は、Facebook側のAPIの更新によってシェア数の取得に失敗している可能性があります。その場合は、「wp-content/plugins/sns-count-cache/includes/class-scc-share-facebook-strategy.php」を編集することで暫定的に対処することができます。

なお、下記の対処は、SNS Count Cache0.11.1、FacebookのAPIバージョンはv3.0で実施しました。

まずは、class-scc-share-facebook-strategy.phpの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'];

続いて、95~107行目付近で以下のコードを探します。


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

上記2箇所を変更することで、Facebookのシェア数も取得できるようになりました。

プラグインのファイルを直接編集するので、あくまで自己責任ということでお願いいたします。

あとがき

ページを開くたびにシェア数を取得しないので、表示も高速になりますね。

オリジナルのSNSボタンを設置していて、シェア数のカウントを表示したい場合は、ぜひ導入をご検討ください。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です