我在网站上为Google跟踪代码管理器设置了一些自定义代码,用于跟踪某些自定义数据,但它没有跟踪。 dataLayer变量正在整理标记管理器代码上方的多个数据。
过程是,用户登陆页面并点击,这将使用本地化数据从wordpress等获取数据,并通过ajax调用记录此信息。我们还希望在ajax调用之前使用标记管理器在Google Analytics中记录此数据。
这是Javascript。
// JavaScript Document
jQuery(document).ready(function($){
console.log(gg_data_object);
var MyObject = {
load: function(){
MyObject._do_ajax('landed', null, null);
},
_readCookie: function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return 0;
},
_click_trace: function(event){
MyObject._do_ajax('clicked', this.href, $(this).attr('class'));
},
_submit_trace: function(event){
gg_data_object.user_id = MyObject._readCookie('user_id');
MyObject._do_ajax('submission', gg_data_object.post_type, $(this).attr('class'));
},
_do_ajax: function(event_action, href, class_ref){
var data = {
'action' : 'track_event',
'security' : gg_data_object.ajax_nonce,
'event_action' : event_action,
'current_url' : gg_data_object.current_url,
'date' : gg_data_object.date_today,
'phpsessionid' : gg_data_object.phpsessionid,
'post_id' : gg_data_object.post_id,
'post_type' : gg_data_object.post_type,
'referrer' : gg_data_object.referrer,
'unique_id' : gg_data_object.unique_id,
'user_id' : gg_data_object.user_id,
'clickedon' : href,
'class_location_type' : class_ref
};
/// Now ping event to google analytics - Nothing works
dataLayer.push(data);
dataLayer.push({'gg_event_action': event_action});
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.ajax({
type : "post",
dataType : "json",
url : gg_data_object.ajaxurl,
data : data,
success: function(response) {
console.log(response);
return true;
}
});
},
}
MyObject.load();
$(document).on('click', 'a', MyObject._click_trace);
$(document).on('click', 'input[type="submit"]', MyObject._submit_trace);
});
我的问题不是上面的代码,实际上事实是,即使花了一天左右的时间阅读文档,观看视频我也似乎无法设置一个有效的推送。
在代码管理器中:
但它没有将数据发送到Google Analytics。 对我所缺少的任何帮助都会非常感激。
答案 0 :(得分:1)
好的,到目前为止我所做的就是。我已经使用了答案按钮,因此我可以格式化答案。
我设置了一个看到的事件,并多次使用它来使用相同的引用来跟踪数据。
遵循本教程。
这就是创建标签。 有自定义{{event}} 为标签和类别设置宏 然后创建了一个规则,将事件与我的自定义事件引用联系起来。
然后我
/// Now ping event to google analytics
dataLayer = [];
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : event_action,
'gtmLabel' : gg_data_object.current_url
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'sessionid',
'gtmLabel' : gg_data_object.phpsessionid
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'post_id',
'gtmLabel' : gg_data_object.post_id
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'post_type',
'gtmLabel' : gg_data_object.post_type
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'referrer',
'gtmLabel' : gg_data_object.referrer
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'unique_id',
'gtmLabel' : gg_data_object.unique_id
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'user_id',
'gtmLabel' : gg_data_object.user_id
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'clickedon',
'gtmLabel' : gg_data_object.href
});
dataLayer.push({
'event' : 'trackEvent',
'gtmCategory' : 'track_event',
'gtmAction' : 'class_ref',
'gtmLabel' : gg_data_object.class_ref,
/*'event_action' : event_action,
'current_url' : gg_data_object.current_url,
'phpsessionid' : gg_data_object.phpsessionid,
'post_id' : gg_data_object.post_id,
'post_type' : gg_data_object.post_type,
'referrer' : gg_data_object.referrer,
'unique_id' : gg_data_object.unique_id,
'user_id' : gg_data_object.user_id,
'clickedon' : href,
'class_location_type' : class_ref*/
});
console.log(dataLayer);
有一种更优雅的方法可以做到这一点,并设置额外的字段,但现在这是有效的。 谢谢你的帮助。
岸堤
答案 1 :(得分:1)
您可以使用以下优化代码。您需要以JSON格式定义您的操作和标签并循环它。易于维护。
var dataLayer = [];
var d = [
{
'gtmAction' : event_action,
'gtmLabel' : 'gtmLabel'
},
{
'gtmAction' : 'sessionid',
'gtmLabel' : gg_data_object.phpsessionid
},
{
'gtmAction' : 'post_id',
'gtmLabel' : gg_data_object.post_id
}
];
for(i = 0; i<d.length; i++) {
dataLayer.push({
'event': 'trackEvent',
'gtmCategory': 'track_event',
'gtmAction': d[i].gtmAction,
'gtmLabel': d[i].gtmLabel
});
}
console.log(dataLayer)