Skip to content
Takahashi Fumiki edited this page Jun 1, 2023 · 13 revisions

Ga Communicator について

このプラグインはGoogle Analytics Data API を利用して、Google Analytics4(GA4) のデータを取得します。

主に利用している機能は runReport リクエストです。 https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport?hl=ja

「どのようにデータを取得したいか?」という要件はサイトごとに異なります。したがって、このプラグインでは提供する主な機能は以下の2つのみです。

  • 人気ランキングウィジェット
  • 設定画面

カスタムの要件に対しては、以下の関数によって様々なデータを取得することが主な目的です。composerとしてインストールした場合はクラスメソッドでしか利用できませんが、プラグインとしてインストールした場合は関数が利用できます。

// 関数
$response = ga_communicator_get_report_ga4( [
	'limit' => 20,
] );

// クラスメソッド
$response = Kunoichi\GaCommunicator::get_instance()->get_ga4_report( [
	'limit' => 20,
] );

関数リファレンス

ga_communicator_get_report_ga4() はrunReportをラップしたものです。リクエストに含められるプロパティはドキュメントで確認できます。代表的なプロパティをいかに例示します。

// 今日の日付を取得
$now        = new DateTime( 'now', new DateTimeZone( wp_timezone_string() ) );
// 1日前の日付を取得
$start_date = $now->sub( new DateInterval( 'P1D' ) )->format( 'Y-m-d' );
// リクエストを実行
$result = ga_communicator_get_report_ga4( [
	'dimensions' => [
		[
			'name' => 'pagePath',
		],
		[
			'name' => 'customEvent:author', // カスタムディメンションで登録したプロパティ。
		],
	],
	'dateRanges'      => [
		[
			'startDate' => $start_date, // デフォルトは30日前
			'endDate'   => $now->format( 'Y-m-d' ), // デフォルトは今日の日付
		],
	],
	'dimensionFilter' => [ // デフォルトは指定なし
		'filter' => [
			'fieldName'    => 'pagePath',
			'stringFilter' => [
				'matchType' => 'PARTIAL_REGEXP',
				'value'     => '^/news/article/',
			],
		],
	],
	'limit' => 20, // デフォルトは10
] );
  • デフォルト値はGa4Connectorで確認できます。
    • ディメンジョンは pagePath と pageTitle
    • メトリックスは screenPageViews
    • 表示順は screenPageViews の降順
  • ディメンジョンフィルターは複数条件を指定できますが、単数か複数かで指定方法が変わるので、ドキュメントFilterExpressionを参照してください。
  • ディメンジョンおよびマトリックスを参照し、利用できるものを選んでください。カスタムディメンションはプロパティとして定義したものを利用します。以前のように ga:dimension1 などの指定では取れません。

APIとデータ構造を理解する

その上で、ディメンション(分析軸)とメトリックス(指標)という概念をよく理解してください。このライブラリはAPIとの通信を主眼にしており、「APIを使ってできること」はカバーしていません。

たとえば、「人気のあるページをPV順にほしい」という場合、必要なディメンションとメトリックスは以下になります。

 ディメンション メトリックス
ga:PagePath ga:Pageviews

これで上記の関数を実行すると、ページビューのリストが届きます。あとはWordPress側でそのページパスから投稿IDを突き止める必要があります。

また、注意点として、「ページパス=特定のページ」とならないケースが多くあることに注意しましょう。AMPのURL /article/123/amp や、複数ページに渡る投稿 /article/123/page/2 など、例外はいくらでも存在します。添付ファイルページを利用しているサイトでは「添付ファイルは個別のページと考える」「添付ファイルのPVを親投稿に合算する」など、考えうる方法はいくつかあります。

上記のURLを別のものと考えるべきでしょうか。通常は集計したいと思うはずです。このような場合はカスタムディメンションを用意し、投稿IDなどをシングルページのみで出力するようにしましょう。

 ディメンション メトリックス
ga:dimension1 ga:Pageviews

こちらではより正確なデータが取得できます。

ページビューではなく、セッション数や直帰率などを使うこともできます。

カスタマイズ

No UI Mode

他のプログラムでサービスアカウントを利用しており、管理画面の設定画面が必要ないという場合もあるかもしれません。また、Composerで利用しているプロジェクトでも同様の需要があるはずです。 その場合はNO UI Modeを試してください。

// plugin_loadedフックより前、
// もしくはComposerで初期化するより前に定義する
define( 'GA_COMMUNICATOR_NO_UI', true );
// スクリプトのレンダリングも停止したかったら以下の定数も定義
define( 'GA_COMMUNICATOR_NO_RENDERER', true );

ただし、これだとプロパティの設定やサービスキーの設定ができませんので、GA4で利用する場合は最低限以下の項目を ga_communicator_predefined_key フィルターで設定してください。

  • サービスアカウントの鍵(JSON形式)
  • GA4のプロパティID
// GA4のAPIに必要なサービスアカウントを返す
add_filter( 'ga_communicator_predefined_key', function() {
	return get_option( 'my_service_key', true );
} );

// GA4のAPI利用に必要なデータをフィルターで設定する
add_filter( 'ga_communicator_predefined_option', function( $value, $key ) {
    switch ( $key ) {
        // プロパティID。
        case 'ga4-property':
            return '11110000'; // 決めうちの場合
        default:
            return $value;
    }
}, 10, 2 );