Googleアナリティクス(GA4)でアクセス解析をしているなら、そのPVデータを取り込んで人気記事ランキングが作れる。WordPress側でPVを数える必要がないので、データベースに書き込みが増えず、サイトも重くならない。
この間までSimple GA Rankingというプラグインを利用していたのだがGA4に変わってから稼働しなくなった。
ランキング系のプラグインはいろいろあるけど、更新が止まったり仕様が変わったりで動かなくなることがある。今回はGA4のAPIを直接叩く小さなプラグインを自作してみる。
今回は準備編。GA4のデータを読むための鍵を作って、サーバーに置くところまで。用意するものはこれだけ。
- GA4で計測中のWordPressサイト
- Google Cloud にログインできるGoogleアカウント(GA4と同じアカウントが楽)
- FTPかサーバーのファイルマネージャで、公開フォルダの外にファイルを置ける環境
- PHP 7.4以上(OpenSSL拡張が有効なこと。普通のレンタルサーバーなら有効になっている)
Google Cloud でサービスアカウントを作る
プラグインがGA4のデータを読むための「専用アカウント」を作る。
①プロジェクトを作る
※既存のプロジェクトがあればそれを使ってもいい
- Google Cloud コンソール を開く
- 画面上部のプロジェクト選択 →「新しいプロジェクト」
- プロジェクト名は管理しやすい名前でOK(例:MYSITE-POPULAR-POSTS)→「作成」
②Google Analytics Data API を有効にする
- 作ったプロジェクトが選ばれていることを確認
- 左メニュー「APIとサービス」→「ライブラリ」
- 「Google Analytics Data API」を検索して開き、「有効にする」
似た名前の「Google Analytics API」は旧アナリティクス(UA)用なので別物。GA4は Data API のほう。
③サービスアカウントを作る

- 左メニュー「IAMと管理」→「サービスアカウント」
- 「サービスアカウントを作成」→ 名前を入れる(例:ga4-ranking)→「作成して続行」
- ロールは何も付けずに「完了」
GA4のデータを読む権限はGA4側で付けるので、ここでロールは不要。
④鍵(JSONファイル)を作る

- サービスアカウント一覧で、作ったアカウントの右端「⋮」→「鍵を管理」
- 「鍵を追加」→「新しい鍵を作成」
- キーのタイプは「JSON」→「作成」
JSONファイルが自動でダウンロードされる。この鍵は 作成時に1回しかダウンロードできない ので要注意。なくしたら作り直せばいいけど、古い鍵は削除しておく。
ファイルを開くと client_email という項目に xxx@プロジェクト名.iam.gserviceaccount.com のようなメールアドレスが入っている。次のGA4の設定で使う。中身には秘密鍵が入っているので、人に見せたり公開したりしないこと。
組織アカウントで「組織ポリシーで鍵の作成が無効」と出た場合は、組織ポリシー iam.disableServiceAccountKeyCreation が効いている。そのプロジェクトだけ例外にする必要がある。
GA4にサービスアカウントを追加する
作ったサービスアカウントに、GA4のデータを見る権限を付ける。

- Googleアナリティクス を開く
- 左上のプロパティ名から、ランキングを作りたいサイトのプロパティを選ぶ
- 左下の歯車アイコン(管理)→「プロパティ設定」→「プロパティ」→「プロパティのアクセス管理」
- 右上の「+」→「ユーザーを追加」
- メールアドレス欄に、JSONの
client_emailを貼り付け - 「新規ユーザーにメールで通知する」のチェックを外す(サービスアカウントはメールを受け取れない)
- 役割は「閲覧者」→「追加」
閲覧者なのでデータを見ることしかできない。万一鍵が漏れても、GA4の設定を変えられたりサイトを操作されたりはしない。
プロパティIDを控える
同じ管理画面の「プロパティ設定」→「プロパティの詳細」に、9桁前後の数字の プロパティID が出ている。プラグインの設定で使うので控えておく。
※G-XXXXXXX の測定IDとは別物なので注意。GA4を開いているときのURLが …/a12345678p987654321/… のようになっていれば、p の後ろの数字がプロパティID。
※複数サイトでランキングを作る場合も、サービスアカウントと鍵は1つで足りる。サイトごとのプロパティに、同じメールアドレスを閲覧者で追加すればいい。
鍵ファイルをサーバーに置く
ダウンロードしたJSONをサーバーにアップする。ここが一番大事なポイントで、必ず公開フォルダ(public_html)の外 に置く。public_htmlの中に置くと、URLを叩かれただけで鍵が丸見えになる。
Xserverなら、ドメインのフォルダ直下(public_htmlと同じ階層)に secure フォルダを作ってそこに入れる。
/home/ユーザー名/example.com/
├── public_html/ ← WordPressはここ
└── secure/ ← 新しく作る
└── service-account-credentials.jsonファイル名は何でもいい。設定画面でフルパスを指定するので、自分でわかる名前にしておく。
パーミッションはこう設定する。
| 対象 | パーミッション |
|---|---|
| secure フォルダ | 700 |
| 鍵ファイル | 600 |
フォルダに666などを付けると逆に中が読めなくなるので注意。フォルダは中に入るための実行権限(x)が要る。設定画面の接続テスト(次回のプラグイン設定で)で「読み込み権限がありません」と出たら、フォルダ705・ファイル604に緩めて試す。
ファイルマネージャで「移動できません」と言われた場合は、移動ではなく「PCにダウンロード → 新しい場所にアップロード → 元を削除」でやると確実。
NOTICES
- 記事内容は実装させたものがほとんどですが自己責任で参考にしてください。