在PHP中将Google Analytics事件添加到表单提交
我希望在成功提交PHP表单(购买的脚本)时添加一个事件。我在PHP中找到了成功触发的函数,并标记了我认为分析的方向在PHP中将Google Analytics事件添加到表单提交,php,forms,google-analytics,Php,Forms,Google Analytics,我希望在成功提交PHP表单(购买的脚本)时添加一个事件。我在PHP中找到了成功触发的函数,并标记了我认为分析的方向 function emailSuccessfullySent() { global $translations, $lang, $options, $fdata, $is_ajax; // redirect to custom "success" page if it's been set if ( !empty($options['redirect_url'])) {
function emailSuccessfullySent() {
global $translations, $lang, $options, $fdata, $is_ajax;
// redirect to custom "success" page if it's been set
if ( !empty($options['redirect_url'])) {
if (!$is_ajax) {
header('Location: '.$options['redirect_url']);
} else {
echo json_encode(array('redirect' => array($options['redirect_url'])));
}
exit;
}
// if no redirect has been set, echo out the success message
if ($is_ajax) {
echo json_encode(array('success' => array($translations->form->success->title->$lang)));
// analytics code here
} else {
echo '<h2>'.$translations->form->success->title->$lang.'</h2>';
// analytics code here
}
removeUploadsFromServer();
}
你会想看看谷歌分析 这是一个我已经成功使用的PHP实现,但对于您的用例来说可能有些过分(但至少是一个参考),但我在这篇文章中简化了它
//Handle the parsing of the _ga cookie or setting it to a unique identifier
function ga_parse_cookie(){
if ( isset($_COOKIE['_ga']) ){
list($version, $domainDepth, $cid1, $cid2) = explode('.', $_COOKIE["_ga"], 4);
$contents = array('version' => $version, 'domainDepth' => $domainDepth, 'cid' => $cid1 . '.' . $cid2);
$cid = $contents['cid'];
} else {
$cid = ga_generate_UUID();
}
return $cid;
}
//Generate UUID v4 function (needed to generate a CID when one isn't available)
function ga_generate_UUID(){
return sprintf(
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff), mt_rand(0, 0xffff), //32 bits for "time_low"
mt_rand(0, 0xffff), //16 bits for "time_mid"
mt_rand(0, 0x0fff) | 0x4000, //16 bits for "time_hi_and_version", Four most significant bits holds version number 4
mt_rand(0, 0x3fff) | 0x8000, //16 bits, 8 bits for "clk_seq_hi_res", 8 bits for "clk_seq_low", Two most significant bits holds zero and one for variant DCE1.1
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) //48 bits for "node"
);
}
//Send Data to Google Analytics
//https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#event
function ga_send_data($data){
$getString = 'https://ssl.google-analytics.com/collect';
$getString .= '?payload_data&';
$getString .= http_build_query($data);
$result = wp_remote_get($getString);
return $result;
}
//Send Event Function for Server-Side Google Analytics
function ga_send_event($category=null, $action=null, $label=null, $value=null, $ni=1){
//GA Parameter Guide: https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=en
//GA Hit Builder: https://ga-dev-tools.appspot.com/hit-builder/
$data = array(
'v' => 1,
'tid' => 'UA-XXXXXX-Y', //***** Replace with your tracking ID!
'cid' => ga_parse_cookie(),
't' => 'event',
'ec' => $category, //Category (Required)
'ea' => $action, //Action (Required)
'el' => $label, //Label
'ev' => $value, //Value
'ni' => $ni, //Non-Interaction
'dh' => 'gearside.com', //Document Hostname
'dp' => '/', //Document path
'ua' => rawurlencode($_SERVER['HTTP_USER_AGENT']) //User Agent
);
ga_send_data($data);
}
然后,在您注释的位置,您只需放置函数:
ga_send_event('Form Button', 'Submit', 'Feedback');
另一个选择是在“成功”页面上设置目标
表单提交成功后,用户将被重定向到成功页面,并在谷歌分析中触发目标。您的回答很有意义。我的同事也看了我一眼,因为我对PHP不太精通,他说应该可以用。出于某种原因,它不起作用。我将把这个标记为正确答案,因为它正是那个。不幸的是,如果我不能很快弄明白,我可能不得不使用一种不太准确的方法。感谢您抽出时间。在不知道您遇到的具体错误的情况下,我只需确保您已将“tid”值替换为您自己的GA跟踪ID。您还需要将gearside.com中的主机名更新为您自己的主机名。在Google Analytics中,检查实时事件报告,我甚至会使用
var\u dump()
在静态页面(表单外部)上测试它,以确保它正常运行。可能的问题是行$result=wp\u remote\u get($getString)代码>特定于WordPress。使用这个答案中的代码作为替代似乎是可行的:这是一个很好的B计划,但目前表单提交并没有重定向到另一个页面。我现在正试图避免这个选择。
ga_send_event('Form Button', 'Submit', 'Feedback');