GoogleAnalyticsを見ていて気付く

ふとGoogleAnalyticsを見ていて気付く。

Google Analyticsでプレビューがカウントされている

preview=true?あ、まずい。管理メニューの投稿でプレビュー表示したものまでGoogleAnalyticsでページカウントされてしまっている。このサイトのGoogleAnalyticsの設定は、Googleタグマネージャーで全部行っています。GoogleAnalyticsのビューを追加して、preview=trueは計測しないようにフィルタをかけても良いんだけどそれでは根本解決にならない。そもそも計測する必要ないし。
となるとGETパラメータで判断して、previewが存在すればGoogleタグマネージャーのタグを出力しないようにしようかと考えたのですが、そもそもこのサイトの場合、ログインできる人は自分一人なので管理画面にログインしている状態であればタグを出力しないという発想にいきついたので、調査をはじめました。

is_user_logged_in()関数

検索したらあっさりあった。is_user_logged_in()というログイン状態を判定する関数です。

この条件分岐タグは、現在の訪問者がログインしているかチェックします。これは TRUE または FALSE の値を返す boolean 関数です。

Codex日本語版:関数リファレンス/is_user_ logged_in 引用

ログインしている時にTRUEが返ってくるのか。ログインしていない時にタグを出力したいので、以下のように記述。

if ( ! is_user_logged_in() ) {
	// GTMタグを出力
}

これで投稿からのプレビューでカウントされることがなくなりました。よく考えてみたら、同じ管理メニューで外観のカスタマイズも同じ現象が起こっていたのでは?こちらは調べていないけど。

is_preview()関数

この流れで見つけた関数が、is_preview()関数。プレビュー状態を判定しているようです。Codexの日本語訳がなかったので、英語版で内容確認。

This Conditional Tag checks if the currently displayed post, page or post type is a preview. This is a boolean function that will return the value of the preview query value, which is either true or false for a front-end page.

Codex:関数リファレンス/is_preview 引用

「この条件タグは、現在表示されている投稿、固定ページ、または他の投稿タイプがプレビューであるかどうかをチェックします。 プレビュークエリの値を返すブール関数です。これは、フロントエンドページに対してtrueまたはfalseです。」
という意味かな。あーなるほど、この関数だとフロントページでの判定ということは、さっきの管理メニューのカスタマイズでは大丈夫ということか。例にも掲載されている「Include analytics code」というようにタグをプレビューで出さないための関数がちゃんとあるのね。

if ( ! is_preview() ) {
    // Include analytics code
}

結論としては、is_user_logged_in()関数を採用することにしました。そもそも自分自身のアクセスを計測するのは正しい計測データにはならないので。客観的データでないと意味がない。

条件分岐タグ(Conditional Tag)

調べてみると結構知らない条件分岐がたくさんあることを知りました。一通り見ておこうと思った。
Codex日本語版:条件分岐タグ