WordPressプラグインWordPressにおけるSNSシェア数の取得・表示方法に新たな選択肢を!Twitter、Facebook、Google+、はてなブックマークのシェア数をキャッシュするWordPressプラグインを開発、正式リリースしたので紹介します。Cacheとは、Twitter、Facebook、Google+、はてなブックマークのシェア数をキャッシュするWordPressプラグインです。表示時にネットワークを介さずキャッシュ経由でシェア数を取得できるようになるため、複数の記事、複数のSNSにまたがるシェア数取得時に表示速度の改善が見込めます。最近は、ブログとソーシャルメディアのつながりが重要になってきており、記事をアピールするためにシェア数を表示しているサイトが多くなってきました。個別記事だけでなく、以下の様にTOPページの各記事への表示を検討しているサイトも多くなってきているのではないでしょうか。単純にSNS提供のAPI経由でシェア数を直接取得するよう実装すると、表示速度が遅くなってしまう場合がよくあります。これは、対象記事が多いためその分だけシェア数の取得に時間がかかるようになるためです。このボトルネックを解消し、表示速度の改善を図ることがこのプラグインの目的です。参考まで、当プラグインを活用してシェア数を表示したトップページの速度評価を掲載しておきます。計測サイトは、GTmetrixとPingdomです。4種類(はてなブックマーク、Twitter、Facebook、Google+)の計60個のシェア数を表示しているにもかかわらず、ページ読込時間が1秒代前半と比較的よい結果が得られています。※もちろんこのプラグインの効果だけではなく、その他様々な施策を実施した総合的な結果です。Cacheの動きについて解説します。Cacheの動作について概念図を示します。キャッシュプラグインというとアクセスした際にその情報をキャッシュするイメージを持たれる方が多いかと思いますが、このプラグインはSNSのシェア数取得と表示処理と完全に分離します。要は取得と表示が非同期に行われるということです。Cacheプラグインがバックグラウンドで定期的にシェア数の取得を行いキャッシュに保存します。表示は、必要なタイミングでキャッシュから随時シェア数を取得するといった形になるわけです。表示時にSNSのシェア数を取得をネットワークを介してではなく、キャッシュを介して取得する形になるので、取得処理が高速化されます。現時点では、以下の図の通り、10分ごとに20記事ずつシェア数を取得し、キャッシュに保存する仕様となっています。最後の記事のシェア数キャッシュが済んだら、また最初の記事に戻って取得しなおすといった処理を繰り返します。シェア数を取得する間隔と一度に対象とする記事数は、今後設定で変更できるよう修正する予定です。APIを使用しています。キャッシュデータは、基本的にWordPressのデータベース(wp_optionsテーブル)に期限付きで保存されます。期限が来れば自動的に削除されるのでゴミが残ることはありません。当プラグインは上記APIを使用することでオブジェクトキャッシュと連携し、データベースではなくオブジェクトキャッシュ上にシェア数をキャッシュさせることが出来るよう実装しています。ファイルキャッシュ方式のオブジェクトキャッシュを使用していれば、ファイルとしてキャッシュされますし、APC等のメモリキャッシュ方式の場合はメモリ上にキャッシュさせることが可能になります。一般的にデータベースからの情報取得は重い処理となるため、オブジェクトキャッシュと併せて使用するとより表示速度の改善が期待できます。審査を受け、すでにWordPress公式レポジトリに登録済みです。Cache」を検索し、当該プラグインをインストールし、有効化して下さい。設定は特に必要ありません。[アップロード]でダウンロードしたzipファイルを選択し、アップロードして下さい。プラグインのzipファイルは、以下よりダウンロード可能です。以下4つの関数を使用することで、キャッシュからシェア数を取得可能です。キャッシュがそもそも存在しない場合は、何も返しません。現在利用中のWordPressテーマのindex.php、home.php、archive.php等のループ内でご使用下さい。以下は、サンプルコードです。WP_Query()等のループ処理内で使用します。ループ内で現在の記事に関するシェア数を自動で参照してくれます。関数を使用するだけでは、数字しか返ってきません。表示するためにサンプルコードの様にechoを使用する必要があります。?></p><?php}}wp_reset_postdata();?>ちなみにfunction_exists関数で事前の関数有無チェックは行うようにして下さい。なくても動作はしますが、プラグイン無効化時等、関数が非登録となった場合にページが正常に表示されなくなります。シェア数のキャッシュ有無確認方法そもそも対象の記事に関してシェア数が取得されているのか気になる方がでてくるかと思います。そのためのにキャッシュ状況確認用のページを設定画面に設けています。Cache]の画面で確認可能です。Cache利用時の留意事項オブジェクトキャッシュの使用有無やそのキャッシュ設定に依存しますが、プラグインやテーマの更新時に取得済みキャッシュが自動的にクリアされる場合があります。再度取得されるまでキャッシュからシェア数が取得できなくなるので、あらかじめご了承ください。ページ表示時に都度SNSからシェア数を取得するわけではないので、実際のシェア数とキャッシュを通じて表示されるシェア数に乖離が発生する場合があります。まとめWordPressにおけるSNSシェア数の取得・表示方法に新たな選択肢を!代表的なSNS(Twitter、Facebook、Google+、はてなブックマーク)のシェア数をキャッシュするWordPressプラグインを紹介しました。今後ですが、以下の対応を検討しています。本エントリ公開後にバージョンアップを行いました。下記エントリも併せてご確認下さい。Cacheアップデート限られた余暇時間の中で可能な範囲での対応となりますが、ご要望等がありましたらこちらからお問い合わせ頂くか、Twitterで@marubon_jp宛にメンションを頂けると幸いです。更新情報は以下にて配信しています。しながら様々な工夫(ライフハック)をアウトプットしていきます。STINGER3の時代が来た。しながら様々な工夫(ライフハック)をアウトプットしていきます。STINGER3の時代が来た。