メニュー

東京・小金井市のWEB制作会社の豆知識

MEMORANDUM

仮想ページを使用してGoogleアナリティクスで外部リンクへの遷移を計測できるようにする

アクセス解析をする際に、非常にお世話になっている「googleアナリティクス」
専用タグの設置してあるサイト内ページであれば計測が簡単なのだけれど、外部リンクには自社タグが設置できないため、仮想ページとリダイレクト処理を使用して計測できるようにした方法をメモ。

まず、GA4からのgoogleアナリティクスの仕様変更により、パス表示ではパラメータ形式のURLは個別ページとして表示してくれないため、ディレクトリ構成でのURLを生成する必要があります。
参考例はワードプレスを使用し、カスタムフィールド(target_url)に外部リンクのURLが設定しています。

計測したいサイト内ディレクトリ直下に計測用のディレクトリ「links」を作成。
その中に「.htaccess」と「index.php」を設置します。

.htaccess

RewriteEngine on
RewriteRule ^(.*)$ index.php [L]

index.php

<?php
require_once(__DIR__.'/../wp-blog-header.php');

$parse_url = parse_url($_SERVER["REQUEST_URI"]);
$segments = explode('/', trim($parse_url['path'], '/'));

$id = $segments[1];

if(!empty($id)){
	$dt['id'] = preg_replace('/[^0-9]/', '', $id); //数字のみを対象
	$url = esc_url(get_post_meta($dt['id'], 'target_url', true));
}

?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex, nofollow">
<title>外部リンク|<?php echo get_the_title($dt['id']); ?></title>

<!-- Google tag (gtag.js) をここに記載-->

<meta http-equiv="refresh" content="0; URL=<?php echo($url); ?>">
</head>
<body>
</body>
</html>

phpでのリダイレクト処理では「header関数」を使用することが一般的ですが、その場合は計測タグが読み込めなくなるため、今回はメタリフレッシュを使用しています。
自然な遷移になるよう、リダイレクトまでの処理時間を「0秒」に設定していますが、遷移先のページの読み込みが遅い場合は一定時間、空のページが表示されてしまいます。
訪問者が戸惑わないよう「リダイレクト中」などの表記を加えても良いかもしれません。

外部リンクを設置するページ(single.php)

<a href="/links/<?php echo get_the_ID(); ?>" target="_blank" rel="noreferrer noopener">外部リンク先名</a>

外部リンクを設置するページではリンクを仮想ページ(links)に向けます。
以上です。

尚、今回は外部リンク設定が1点でしたが、複数になる場合はリンクの記載に対象となるカスタムフィールドの値を追記し、受け取り側で判別して振り分けることも可能です。

外部リンクを設置するページ(single.php)

<a href="/links/target_url/<?php echo get_the_ID(); ?>" target="_blank" rel="noreferrer noopener">外部リンク先名</a>

受け取り側の処理は下記を参考ください

index.php

<?php
require_once(__DIR__.'/../wp-blog-header.php');

$parse_url = parse_url($_SERVER["REQUEST_URI"]);
$segments = explode('/', trim($parse_url['path'], '/'));

$category = $segments[1];
$id = $segments[2];

if(!empty($category) && !empty($id)){
	$dt['id'] = preg_replace('/[^0-9]/', '', $id); //数字のみを対象
	$url = esc_url(get_post_meta($dt['id'], $category, true));
}

?>
以下省略

RANKING

人気記事

同一カテゴリーの記事