Google Analyticsのコード位置についての提案

Simplicityの特徴 フォーラム 要望・機能追加など Google Analyticsのコード位置についての提案

  • このトピックには11件の返信、2人の参加者があり、最後に通りすがりにより9年前に更新されました。
11件の返信スレッドを表示中
  • 投稿者
    投稿
    • #30096
      通りすがり
      ゲスト

      お世話になっております。
      Google AnalyticsのコードをSimplicityのカスタマイザーから貼り付けた際、</body>付近にコードが配置されますが、Google Analyticsの公式ヘルプを見ると、「貼り付ける場所は、終了タグ </head> の直前です。」と記載されているのでこれに従ったほうが良いと思います。
      https://support.google.com/analytics/answer/1008080?hl=ja
      ご検討いただけたら幸いです。よろしくお願いします。

    • #30098
      Hidekichi
      ゲスト

      正式ファイルの修正はわいひらさんに任せますが、任意で修正するとすると、

      footer.phpにある、

      <?php get_template_part('analytics'); //アクセス解析用テンプレート?>
      //↓のようにコメントアウト
      <?php //get_template_part('analytics'); //アクセス解析用テンプレート?>

      header.phpの

      <?php get_template_part('analytics'); //アクセス解析用テンプレート?>
      <?php wp_head(); ?>
      </head>
        <body ....

      のようにコメントアウトする前の部分をwp_head();の前に追記するで良いのではないでしょうか?

    • #30147
      アバター画像わいひら
      キーマスター

      個人的に、ヘッダーでスクリプトファイルを読み込むと、レンダリングをブロックするかと思って、そのようにしてあります。(ページの表示が遅くなるかと思って)
      でも、Analyticsのスクリプトコードは、ページ読み込みの最後で読み込まれる処理などがしてあるのでしょうか?
      Googleだから、もしかしたら、そのようになっているのかもしれませんね。
      もし、そのように処理されることがGoogleの公式サイトの記述で確認出来れば、そのように変更したいと思います。
      何か、そういった記述のあるところをご存知でしょうか?

    • #32579
      malcome
      ゲスト

      この件ちょっと気になってた点と重なるので発言させてください。

      そこまで精通しているわけではないので間違いがあったらすみません。

      analyticsにはいくつか種類があります。

      こちらのページがわかりやすいと思います。
      https://blog.e2info.co.jp/2014/11/21/google-analytics-eventtracking/

      以下、上記ページの用語を参照させていただきます。

      simplicityのanalytics.phpで読み込まれるga.jsはレンダリングブロックする「同期トラッキングコード」なので</body>直前での読み込みは正しいと思います。
      これをそのまま</head>に入れてしまうと、SEOにも悪影響を及ぼしかねません。

      そこで要望としてですが、カスタマイザー内で「非同期ga.js」「同期ga.js」「ユニバーサルアナリティクス」より一つ選んでいただき、トラッキングIDを入力というのはいかがでしょうか。
      ユーザーが混乱しないようにどう説明をつけるか、考えだすとわりと面倒くさいので、提案していいものか迷っていましたが、ga.jsは時期未定とはいえサポート終了されるようなので、ユニバーサルアナリティクスの導入はいずれ必須となることと思います。

      個人的にはすでにga.jsは使っていないため、ユニバーサルアナリティクス一本化でもよいですし、自分は子テーマではそのように変更していますが、問題点としてはイベントトラッキングの方法が各手段で異なるため、ユーザーが現在のpageTrackerでイベント補足などしていた場合、_gaqや、gaに乗り換えたときに動かなくなってはクレームの元となってしまいます。

      あとは、わいひら様の裁量次第といったところです。
      正直サポート面倒くさいと思うので、見て見ぬふりが楽かなーとも思います。

      ある程度は推敲して文章作成したつもりですが、わかりづらかったら遠慮無く文句いってください!

      Google公式サイトだと未翻訳含みますがこの辺りでしょうか
      https://developers.google.com/analytics/devguides/collection/gajs/?hl=ja
      https://developers.google.com/analytics/devguides/collection/analyticsjs/?hl=ja

    • #32610
      アバター画像わいひら
      キーマスター

      Analyticsのコードはややこしくて、僕もすべて理解はしておらず、変更して失敗すると怖いので現在ノータッチ状態になっている感じです;

      僕は可能ならば、今後「ユニバーサルアナリティクス」1本でいければと思っています。
      ただ僕は、Analyticsについてあまり詳しくないので、僕より詳しそうな、malcomeさんに一つ質問なんですが、「ユニバーサルアナリティクス」コードを利用すると、Analytics管理画面から何かしらの設定変更は必要でしょうか?
      設定変更が不要のようなら、「ユニバーサルアナリティクス」1本にしたいと考えています。

      個人的にはすでにga.jsは使っていないため、ユニバーサルアナリティクス一本化でもよいですし、自分は子テーマではそのように変更していますが、問題点としてはイベントトラッキングの方法が各手段で異なるため、ユーザーが現在のpageTrackerでイベント補足などしていた場合、_gaqや、gaに乗り換えたときに動かなくなってはクレームの元となってしまいます。

      僕も、アナリティクスのことがよくわからず変更すると、こういったことが怖くて現在コードをさわれずにいます。
      テーマ側の設定失敗でAnalyticsのPV数などが減ると怒る人とかがいそうで;
      よかったら、参考にしたいので、子テーマでのカスタマイズコードを教えていただくことは可能でしょうか?
      利用する場合は、もちろん僕の責任で、利用させてもらいます。

      教えていただいた参考情報は、後で読まさせていただこうと思います。

    • #32611
      アバター画像わいひら
      キーマスター

      現代のSimplicityのバージョンが1.9になったら、1系の最終安定版にしようと思っています。
      次の2.0は変更したい部分の仕様変更をして当分、人柱版にするつもりなので、そのときに「ユニバーサルアナリティクス」を採用できればと思います。

    • #32613
      malcome
      ゲスト

      メジャーバージョンアップで過去切り捨て一本化は、個人で無償で管理されている以上はやむなしと思います。

      ユニバーサルアナリティクスへ乗り換えた際にはAnalytics管理画面上で切り替え手続きを行ったと思います。

      切り替え手続きなしにanalytics.js(ユニバーサルアナリティクス)を利用した場合どうなるかは、やったことないのでわからないです。。。

      analytics.jsとga.jsの互換関係もよくわかっていないため、マニュアル通りに
      現在つかっているanalytics.jsを利用するために、苦肉の策で書き換えることといたしました。

      analytics.jsの実装方法は、だいぶざっくりですが
      子テーマにanalytics.phpをコピーしga.jsの読み込み部分を削除しています。

      
      <?php
      if (!is_user_logged_in()) :
      ?>
      <?php if ( get_tracking_id() && is_analytics_interest() ): //トラッキングIDが設定されているとき?>
      <!-- Google Analytics -->
      <script type="text/javascript">
      var gaJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
      document.write(unescape("%3Cscript src='" + gaJsHost + "stats.g.doubleclick.net/dc.js' type='text/javascript'%3E%3C/script%3E"));
      </script>
      <script type="text/javascript">
      var pageTracker = _gat._getTracker("<?php echo esc_html( get_tracking_id() ) ?>");
      pageTracker._initData();
      pageTracker._trackPageview();
      </script>
      <!-- /Google Analytics -->
      <?php endif; ?>
      <?php if ( get_ptengin_tracking_id() ): ?>
      <!-- Ptengine -->
      <script type="text/javascript">
        window._pt_sp_2 = [];
        _pt_sp_2.push('setAccount,<?php echo get_ptengin_tracking_id(); ?>');
        var _protocol = (("https:" == document.location.protocol) ? " https://" : " http://");
        (function() {
          var atag = document.createElement('script'); atag.type = 'text/javascript'; atag.async = true;
          atag.src = _protocol + 'js.ptengine.jp/pta.js';
          var stag = document.createElement('script'); stag.type = 'text/javascript'; stag.async = true;
          stag.src = _protocol + 'js.ptengine.jp/pts.js';
          var s = document.getElementsByTagName('script')[0];
          s.parentNode.insertBefore(atag, s);s.parentNode.insertBefore(stag, s);
        })();
      </script>
      <!-- /Ptengine -->
      <?php endif ?>
      <?php //以下その他の解析コードなど ?>
      
      <?php endif; ?>
      

      そして別途、analytics_u.phpファイルを作成。これはユニバーサルアナリティクスのトラッキングコードそのままに、トラッキングIDをsimplicityのget_tracking_id()を流用したものです。

      
      <?php if(!is_user_logged_in() && get_tracking_id()): ?>
      <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','//www.google-analytics.com/analytics.js','ga');
      
        ga('create', '<?php echo esc_html( get_tracking_id() ) ?>', 'auto');
        ga('send', 'pageview');
      </script>
      <?php endif; ?>
      

      そして、functions.phpにてwp_headにフックしてこれを読み込ませています。
      より</head>タグに近づけるため、第3引数に11を指定しています。

      
      add_action('wp_head', 'simplicity_add_analytics', 11);
      function simplicity_add_analytics(){
          get_template_part('analytics_u');
      }
      

      Wordpressカスタマイザーを取り扱ったことがないため、具体例がだせないのですが
      analyticsの設定に以下の3つのselectを作り
      1. デフォルト(従来通りの同期型ga.js)
      2. 非同期ga.js
      3. analytics.js

      is_user_logged_in(), get_tracking_id(), 上記オプションの3つでフラグわけをし、
      1のときはwp_footerにフック、2, 3はwp_headにフックとするといかがでしょうか?

      僕の場合はanalytics.jsしか実装していないため未検証ですが、3つ同時に実装しユーザーに選んでもらい、
      ことなるパターンを同時に読み込むことを抑制することは可能とは思います。

      以上、急ぎで書きましたが何かしら参考になれば幸いです。。。
      あと、Hidekichiさんのようなコードの貼り方がわからず、どうなることやら

    • #32614
      malcome
      ゲスト

      `
      <?php
      echo ‘test’;
      `

      見事にエスケープされました。
      読みづらいと思いますが、よろしくお願いします。

    • #32615
      Hidekichi
      ゲスト

      結局の所、トラッキングコードはjavascriptなんですから、別ファイルにしてwp_register_scriptやらで登録後enqueue_scriptで任意の場所、headなりfooterなりに入れればいいんじゃないですかね?

      <?php
      function add_google_analytics() {
        //ここにifで条件付けて旧スクリプトか新スクリプトか分岐
        // $url = get_stylesheet_directory_uri() . 'old'
        // $url = get_stylesheet_directory_uri() . 'new'
        wp_register_script(
          'google-analytics',
          get_stylesheet_directory_uri() . $url, //←親テーマの方が良いかな
          false, 
          '1.0', 
          true // or false -> header
        );
      
        wp_enqueue_script('google-analytics');
      }
      add_action('wp_enqueue_scripts', 'add_google_analytics');
      ?>

      で、読み込むファイルをどれにするかはカスタマイザーで選べますし、optionも必要なら用意して追加とか。
      どこにアカウントやらIDやら何かわかりませんけど、それらを入れるのかはphpで作成とか。そしたらテンプレだけ作っておいて、カスタマイザーでアカウントやらを設定したら書き出せそうですし、書きだした宛先を子テーマにしておいたりして、analyticsの追加オプションは自分で追記してくれみたいな感じでも良いのでは?

      子テーマ使ってなかったらアレですけどね(笑)

    • #32626
      アバター画像わいひら
      キーマスター

      コードありがとうございます!
      コードが文字化けするのは、bbPressフォーラムプラグインの仕様のようです。
      管理者が再投稿しないとだめなようです。

      ユニバーサルアナリティクスへ乗り換えた際にはAnalytics管理画面上で切り替え手続きを行ったと思います。

      切り替え手続きなしにanalytics.js(ユニバーサルアナリティクス)を利用した場合どうなるかは、やったことないのでわからないです。。。

      だとしたら、ユニバーサルアナリティクス1本にはまだできないですね。
      だったらやっぱりカスタマイザーからの選択方式にするしかないかもしれません。

      1. デフォルト(従来通りの同期型ga.js)
      2. 非同期ga.js
      3. analytics.js

      ただ、現在Simplicityでは、dc.js(インタレストレポート)にも対応しています。
      調べてみたら、ユニバーサルアナリティクスは、インタレストリポートにはまだ未対応のようで、dc.jsにも対応させる必要があるかもしれません。

      dc.jsはユニバーサルアナリティクスではまだサポートされておりません。しかし来年にはサポートされる予定です。

      引用:標準のアナリティクス(ga.js)からユニバーサルアナリティクス(analytics.js)への移行:まとめ | Analytics Analyze – GoogleAnaltyics | アクセス解析

      設定が増えて、実装が結構大変そうではありますが、1.8.8か1.8.9あたりで実装できればと思います。
      その際などには、よかったらで良いのですが、出力タグなどをチェックして、おかしなところがあったら、教えていただければ幸いです。

    • #32630
      malcome
      ゲスト

      新規で簡単なブログ作る際などにも、かなり多用させていただいているので、
      自分で追加している部分が少しでも減るのは大歓迎です!
      僕のテストできる範囲が狭いのですが(analytics.jsだけ)できるかぎりのことはさせてください。
      楽しみにしております!

    • #36978
      通りすがり
      ゲスト

      トピ主です。
      現在の最新バージョン2.1.0にて適切な場所にAnalyticsのコードが設置されることを確認しました。
      ありがとうございました。
      これからもよろしくお願いいたします。

11件の返信スレッドを表示中
  • トピック「Google Analyticsのコード位置についての提案」には新しい返信をつけることはできません。
スポンサーリンク
アドセンス(大)
アドセンス(大)