#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, и это должно работать нормально.