Toplytics|GA連携でDB負荷ゼロの人気記事ランキング!

Toplytics|GA連携でDB負荷ゼロの人気記事ランキング!

概要

Google アナリティクス(GA4)の計測データを取得し、サイト上に人気記事ランキングを表示するプラグインです。
一般的な人気記事プラグインはアクセスごとにWordPressのデータベースへPVを書き込むため、アクセス集中時の負荷やDB肥大化が悩みの種になりがちです。
本プラグインは集計処理をすべてGoogle側に任せ、集計結果のデータのみを定期取得して表示するため、サーバーリソースを一切圧迫しません。

plugin banner
配布ページ: https://ja.wordpress.org/plugins/toplytics/

結論

「サイトの表示速度を落とさずに人気記事ランキングを置きたい」「アクセス集中によるサーバーダウンやDB高負荷を確実に防ぎたい」という中〜大規模サイトや、リソースが限られたレンタルサーバーで運営している方に最適です。
初期設定にGoogle CloudのAPI認証が必要なためやや玄人向けですが、一度導入してしまえばサーバー負荷の心配から完全に解放されます。

おすすめポイント

  • サーバーやDBへの負荷がゼロ
    閲覧ごとのDB書き込みを行わず、Google アナリティクスの集計結果をバッチ処理で取得するため、アクセスが急増してもサーバーが重くなりません。
  • フルページキャッシュと共存可能
    JavaScript(AJAX)による非同期読み込みオプションを備えており、ページ全体を静的キャッシュしていてもランキングが正常に更新・表示されます。
  • 柔軟な組み込み方法
    WordPress標準のウィジェットだけでなく、ショートコードやテーマテンプレート用のPHP関数が用意されており、自由なレイアウトに組み込めます。

できること

  • 集計期間ごとのランキング表示
    当日(today)、週間(week)、月間(month)の期間を指定して閲覧数順に記事を出力。
  • JSON / REST APIエンドポイント出力
    集計データを toplytics.json または /wp-json/toplytics/results 経由で取得し、フロントエンド側で動的レンダリング。
  • 投稿タイプやカテゴリによる絞り込み
    通常の投稿(post)だけでなく固定ページやカスタム投稿タイプを対象に含めたり、特定カテゴリに限定したランキングを生成。
  • アイキャッチ画像と閲覧数の表示切り替え
    サムネイル画像やGoogle側で集計されたPV数の表示・非表示をオプションで柔軟に制御。

使いどころ

アクセス数が増えてきて「人気記事プラグインのDB書き込み処理がボトルネックになり、管理画面やページ表示が重くなってきた」というサイトの移行先にうってつけです。
また、Cloudflareなどのエッジキャッシュや高速化キャッシュプラグインを積極的に導入していて、「動的なランキングウィジェットだけキャッシュと競合してうまく動かない」といった環境でも、AJAX非同期読み込みによって問題なく高速性と動的表示を両立できます。

注意点

  • 初期セットアップの手間
    Google Cloud Consoleでプロジェクトを作成し、Google Analytics APIの有効化やOAuth 2.0認証情報(クライアントID / クライアントシークレット)を発行して接続する手順が必要です。
  • 取得件数とフィルタの設計
    Google アナリティクスから取得する件数(Posts to fetch from GA)と、実際に表示を許可する投稿タイプ(Allowed post types)の兼ね合いに注意が必要です。例えばGA側から上位10件を取得した際、上位が固定ページばかりだと記事の表示件数が足りなくなることがあるため、GAからの取得件数は余裕を持って多めに設定しておくのがコツです。
  • デザインのカスタマイズ性
    ウィジェットの標準出力はシンプルなリスト構造のため、見栄えをリッチに整えるにはCSSの調整や専用のテンプレートファイル(custom.template.php)の作成が必要になります。

まとめ

導入のハードルは少し高めですが、サーバーリソースを消費せずに信頼性の高いGAデータでランキングを作れる安心感は格別です。
データベースの肥大化や高負荷に頭を悩ませたくないなら、試してみる価値が十分にあります。

Related Posts:

コメント

コメントを残す

メールアドレスは公開されません。必須項目には印が付きます。

人間であることを証明してください: 9   +   2   =