希望有人能帮我:)
我想做的是,得到第一个访问推荐人并将其发送到表单。我们使用了联系表单7的插件,所以我创建了一个隐藏的输入,获取referer URL,并将referer的值分配给隐藏的输入字段。
在我启用缓存之前,一切都很正常。
这是我使用的函数(以防任何人需要它)
function getRefererPage( $form_tag ){
if(!isset($_COOKIE[\'external_referrer_cookie\']))
{
}
if ( $form_tag[\'name\'] == \'referer-page\' ) {
$form_tag[\'values\'][] = $_COOKIE[\'external_referrer_cookie\'];
}
return $form_tag;
}
add_filter( \'wpcf7_form_tag\', \'getRefererPage\' );
其中,“referer page”是联系人表单7中隐藏字段的名称和ID。
启用缓存后,我必须考虑jQuery解决方案的Javascript来设置cookie。
我添加了jQuery Cookie插件(https://github.com/carhartl/jquery-cookie) 并添加,然后尝试以下代码的多个不同变体来创建cookie并设置cookie值。
My Goal is:当网站访问者第一次访问时,将cookie值设置为参考url,但随后保留该值,例如,如果访问者是从谷歌访问网站的。然后在网站上的页面上移动,一旦他填写表单,隐藏字段中的值仍然应该是带有参数的谷歌url。
这是我在页脚中的JS代码。php的主题现在。
jQuery(document).ready(function($){ // BEGIN CUSTOM JQUERY NO CONFLICT
// $.cookie(\'mysite_referrer\', document.referrer);
// var initreferrer = document.referrer;
// $.cookie(\'mysite_referrer\', initreferrer);
//console.log(\'current cookie ref:\'+$.cookie(\'external_referrer_cookie\'));
//console.log(\'testing\');
$.cookie(\'external_referrer_cookie\');
if ($.cookie(\'external_referrer_cookie\') == \'undefined\' ) {
// console.log(\'setting cookie for\'+ document.referrer);
$.cookie(\'external_referrer_cookie\', document.referrer);
$(\'.wpcf7-text.referer-page\').val($.cookie(\'wsg_external_referrer_cookie\'));
console.log(\'current cookie ref:\'+$.cookie(\'wsg_external_referrer_cookie\'));
}
// $(\'#referer-page\').val($.cookie(\'external_referrer_cookie\'));
console.log(\'current cookie out of function ref:\'+$.cookie(\'external_referrer_cookie\'));
/*
var cookieName = \'cookietest\';
$(function() {
checkCookie();
});
function checkCookie() {
if (document.cookie.length > 0 && document.cookie.indexOf(cookieName + \'=\') != -1) {
// do nothing, cookie already sent
} else {
// handle jQuery animation
// set the cookie to show user has already visited
document.cookie = cookieName + "=1";
}
}
*/
}); // END CUSTOM JQUERY NO CONFLICT
正如你在评论行中所看到的,我尝试了在几个网站教程中找到的许多方法。我已经为此挣扎了几天了,请帮忙:))
非常感谢。
最合适的回答,由SO网友:Tung Du 整理而成
我没有基于cookie的答案,但我认为这不是敏感数据,您可以尝试localStorage。
jQuery(document).ready(function($){
var initreferrer = document.referrer;
if(initreferrer.indexOf(\'yourdomain.com\') === -1 ) { // Check if the referer is your site or not. If not( return -1 ) set the localStorage.
localStorage.setItem("mysite_referrer", initreferrer);
}
});
然后,您可以使用javascript函数(而不是像您那样的过滤器)用保存在浏览器localStorage中的referer填充隐藏字段。我们可以通过
localStorage.getItem("mystite_referer")
.