Как внедрить код отслеживания Google Analytics с идентификатором клиента в нижний колонтитул PHP?

#php #google-analytics

#php #google-analytics

Вопрос:

Я ищу способ интегрировать идентификатор клиента, созданный Google, в пользовательское измерение в Google Analytics. Я нашел инструкции, но у меня это не работает. Я не уверен в том, как правильно установить код отслеживания.

Вот код для реализации:

         ga(function(tracker) {
          var clientId = tracker.get('clientId');
          ga('set', 'dimension2', clientId);
        });
  

Вот мой текущий код отслеживания Google Analytics:

 <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', 'UA-XXXXXXXXXXX', 'auto');
        ga('send', 'pageview');

        ga(function(tracker) {
          var clientId = tracker.get('clientId');
          ga('set', 'dimension2', clientId);
        });

</script>
  

Есть идеи, что не так? Я реализовал функцию, которая неправильно определяет идентификатор клиента?

Ответ №1:

Я нашел решение. Вот код, который я сейчас использую в своем пользовательском WordPress functions.php файл.

 //                                                           GOOGLE ANALYTICS START                                                                                 

// google analytics userid variable
function google_analytics_tracking_code(){
    global $userId;
    $userId = get_current_user_id();
    if (!isset($userId)) {
        $userId = $_SESSION['xxx'];
    }
    ?>

    <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');

            <?php
            // New Google Analytics code to set UserId and ClientId.

            if (isset($userId)) {
                $gacode = "ga('create', 'xxx', 'auto', {'userId': $userId});";
                echo sprintf($gacode, $userId);
            }     
            else {
                $gacode = "ga('create', 'xxx', 'auto');";
                echo sprintf($gacode);
            }?>
            ga('set', 'dimension1', '<?php echo $userId; ?>');

            // Get google client id
            var ga_client_id = null;
            ga(function(tracker) {
                ga_client_id = tracker.get('clientId');
                ga('set', 'dimension2', ga_client_id);
            });

            // Set ramdom session id
            var rand_session_id = null;
            rand_session_id = new Date().getTime()   '.'   Math.random().toString(36).substring(5);
            ga('set', 'dimension3', rand_session_id);

            // Get local time as ISO string with offset at the end
            var hit_timestamp = null;
            var now = new Date();
            var tzo = -now.getTimezoneOffset();
            var dif = tzo >= 0 ? ' ' : '-';
            var pad = function(num) {
                var norm = Math.abs(Math.floor(num));
                return (norm < 10 ? '0' : '')   norm;
            };
            hit_timestamp = now.getFullYear() 
                  '-'   pad(now.getMonth() 1)
                  '-'   pad(now.getDate())
                  'T'   pad(now.getHours())
                  ':'   pad(now.getMinutes()) 
                  ':'   pad(now.getSeconds())
                  '.'   pad(now.getMilliseconds())
                  dif   pad(tzo / 60) 
                  ':'   pad(tzo % 60);
            ga('set', 'dimension4', hit_timestamp);


            ga('send', 'pageview');

    </script>

<?php
}
//add_action('wp_login', 'google_analytics_tracking_code', 10, 2);

// include GA tracking code before the closing body tag
add_action('wp_footer', 'google_analytics_tracking_code', 10, 2);

//                                                           GOOGLE ANALYTICS END                                                                                 
  

Комментарии:

1. Хороший ответ!, Я могу догадаться, что в вашем решении CD 1, CD2 находятся в области пользовательского уровня, CD3 — в области сеанса, а последний CD4 — в области попадания

Ответ №2:

Пользовательские измерения отправляются вместе с обращением к взаимодействию. Вы устанавливаете измерение только после отслеживания просмотра страницы (и вы не отправляете другое взаимодействие), поэтому пользовательское измерение никогда не отправляется. Разместите свой пользовательский код после создания трекера, но перед вызовом pageview, и это должно работать нормально.