我们正在使用php根据用户的来源为我们的用户设置一些Cookie - 其中一些将根据引荐来源网址设置,有些将根据网址中的简短查询字符串进行设置。 / p>
我们只设置了2个Cookie,其目的是跟踪流量的来源,并将数据包含在用户提交的产品中 - 然后我们就可以跟踪哪些提交来自哪个广告系列。
这是一个自定义的wordpress网站,因此代码分为几个不同的文件,如下所示:
的header.php:
<?php
$origin = $_SERVER['HTTP_REFERER'];
$current = $_SERVER['PHP_SELF'];
$bestbefore = time() + 60 * 60 * 24 * 7;
if (isset($_COOKIE['ccsvissource']))
{
}
else
{
if (isset($_GET[gclid]))
{
setcookie('ccsvissource', 'Google', $bestbefore);
setcookie('ccsvismedium', 'Adwords', $bestbefore);
}
elseif (stripos($origin, 'facebook') !== false)
{
setcookie('ccsvissource', 'Advertising', $bestbefore);
setcookie('ccsvismedium', 'Facebook', $bestbefore);
}
elseif ($_GET[utm_medium] == "111")
{
setcookie('ccsvissource', 'Advertising', $bestbefore);
setcookie('ccsvismedium', 'emailcampaign', $bestbefore);
}
else
{
setcookie('ccsvissource', $origin, $bestbefore);
setcookie('ccsvismedium', 'Unknown', $bestbefore);
}
?>
footer.php:
<?php
$mktSource = $_COOKIE['ccsvissource'];
$mktMedium = $_COOKIE['ccsvismedium'];
?>
<p class="hide-me" id="mkt-source"><?php echo $mktSource; ?></p>
<p class="hide-me" id="mkt-medium"><?php echo $mktMedium; ?></p>
<script type="text/javascript">
$(document).ready(function(){
var mktSource = $('#mkt-source').text();
var mktMedium = $('#mkt-medium').text();
$('#hid-ms').val(mktSource);
$('#hid-mm').val(mktMedium);
});
</script>
然后,这些值将传递到用户的申请表中,我们的潜在客户管理系统将完成其余工作。
问题是不一致 - 有时厨师正在设定,有时则没有。客户端是否存在某种情况会阻止cookie被设置?
我知道用户可能关闭了cookie跟踪,并且已经解释了这一点 - 空cookie的数量仍然太高,所以我想我错过了什么。
如果您需要任何进一步的信息,请与我们联系!
非常感谢。
答案 0 :(得分:0)
使用新的wordpress我也遇到了同样的问题,我的自定义cookie没有设置我的代码是正确的,但在某个地方我发现有时自定义cookie不起作用。所以最后我发现了这个带有wp_head
钩子的工作示例。
假设您想设置2个不同的Cookie,例如Area
和currency
,您需要使用此功能wp_head
,我已在个人项目中使用此功能。它完美地工作。
add_action('wp_head', 'my_setcookie');
function my_setcookie()
{
if (!empty($_REQUEST['area'])) {
$area_set = ($_REQUEST['area']);
setcookie('area', $area_set, time() + 3600, COOKIEPATH);
}
if (!empty($_REQUEST['currency'])) {
$currency_request = ($_REQUEST['currency']);
setcookie('currency_cookie', $currency_request, time() + 3600, COOKIEPATH);
}
}