[WordPress] アナリティクスやタグマネのコードをfunctions.phpで読み込みたい
Google Analyticsや、Googleタグマネージャーのコードをheadタグ、bodyタグ内に埋め込むとき、通常はheader.phpなどのテンプレートファイルに直接書き込んで実装することが多いです。
しかし、WordPressのデフォルトテーマなどを親テーマにして子テーマを作っている場合、親テーマがアップデートされることも踏まえて、なるべくテンプレートファイルは親テーマのものをそのまま使いたいです。
このようなトラッキングコードの埋め込みを、functions.php内で記載する方法を検討してみました。
サンプルコード
function my_wp_head() {
if(is_user_logged_in()) return;
echo <<< EOF
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->
EOF;
}
add_action('wp_head', 'my_wp_head', 0);
function my_wp_body_open() {
if(is_user_logged_in()) return;
echo <<< EOF
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
EOF;
}
add_action('wp_body_open', 'my_wp_body_open', 0);
WordPressで用意されています、「wp_head」関数と「wp_body_open」関数に、それぞれ「add_action」で関数を登録し、そこでトラッキングコードの埋め込みを行っています。
原則、タグマネージャーのトラッキングコードは、headタグ、bodyタグ内の開始直後に書くことが推奨されています。そこで、「add_action」関数の第3引数で「0」を指定し、最優先で関数が実行されるようにしています。
「is_user_logged_in」関数で、ログイン中はタグの読み込みは行われないようにしています。
注意点として、親テーマ内で「wp_head」関数と「wp_body_open」関数が呼び出されていないと、サンプルコードは実行されません。サンプルコードがうまく動かない場合は、親テーマでこれらの関数が呼び出されているか確認してみてください。
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。