2017/12/19
最近WordPressで自作テーマを制作していて、プラグインを使わずにGoogleアナリティクスを導入したいなぁということがありました。
ひっじょーにカンタンにできるので、自作テーマを使っているなら、重たくなりやすいプラグインはやめて自分で導入してみましょう!
トラッキングコードを確認
まずは、Googleアナリティクスにアクセスし、Googleから提示されているコードをコピーしましょう。
今回は、「function.php」内にアナリティクス トラッキングコードを出力する関数を作ります。こんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function mytheme_load_ganalytics() { ?> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXXXXXXX-X', 'auto'); ga('send', 'pageview'); </script> <?php } |
そうしたら、「header.php」内の<body>タグのすぐ下に、この一文を追加しましょう。
1 | <?php mytheme_load_ganalytics(); ?> |
これで導入は一旦完了です。実際にサイトにアクセスして、ソースを表示して確認しましょう。
テーマ設定画面でIDを設定する
自分だけで、しかも1つのサイトのみで使うのであれば、上記の方法で問題ありませんが、不特定多数の公開したいテーマや、ほかのサイトでも使いまわしたい時など、いちいちトラッキングIDをテーマファイルに書くのはスマートじゃありませんよね。
このようなときは、テーマの設定画面からIDを設定できるようにしてみましょう!
まず、「function.php」内に以下のコードを貼り付けます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function mytheme_customize_register($wp_customize) { $wp_customize->add_setting( 'mytheme_ganalytics_id', array( 'default' => '', 'transport' => 'refresh' ) ); $wp_customize->add_section( 'mytheme_ganalytics' , array( 'title' => 'Googleアナリティクス 設定', 'priority' => 30, )); $wp_customize->add_control( 'mytheme_ganalytics_id_control', array( 'label' => 'トラッキング ID', 'section' => 'mytheme_ganalytics', 'settings' => 'mytheme_ganalytics_id', 'type' => 'text' ) ); } add_action( 'customize_register', 'mytheme_customize_register' ); |
「外観」→「テーマ」→「カスタマイズ」と進むと・・・
こんな感じに入力欄ができているはずです!
あとは、ここに設定した値を読み取るようにテーマを書き換えます。
「function.php」のmytheme_load_ganalytics()内先頭に、
1 2 | $analytics_id = get_theme_mod('mytheme_ganalytics_id', ''); if ($analytics_id == '') return; |
と追記し、
1 | ga('create', 'UA-XXXXXXXX-X', 'auto'); |
となっている部分を、
1 | ga('create', '<?php echo $analytics_id; ?>', 'auto'); |
と書き換えましょう。以上で、設定値が反映される、はず!
おまけ:ログイン中はアクセス解析しない
1 | <?php mytheme_load_ganalytics(); ?> |
となっている部分を
1 | <?php if ( !is_user_logged_in() ) mytheme_load_ganalytics(); ?> |
としてあげると、ログイン中はアクセス解析の対象から外すことが出来ます。