这是我的代码:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}
}
add_action( 'init', 'set_newuser_cookie');
使用此代码,cookie 工作得很好,但是当我通过此 javascript 代码检查 cookie 是否存在时(需要检查我们是否有 cookie 或不在 javascript 代码中的其他地方使用它):
var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/);
if(isCookie){
console.log('yes');
}else{
console.log('no');
}
它总是在控制台日志中显示"is",即使是在删除 cookie 并第一次访问网站时也是如此。如何更改 php 代码以仅在用户第二次打开页面时创建 cookie。
最佳答案
您将 cookie 设置为:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}
}
add_action( 'init', 'set_newuser_cookie');
说明:如果 cookie 已设置 => !isset($_COOKIE['domain_newvisitor'])
并且用户不是管理员,则您正在设置 cookie。
在此之后,将检查 cookie 是否退出:
var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/);
if(isCookie){
console.log('yes');
}else{
console.log('no');
}
那么cookie每次都会退出。当您创建它(如果是第一次)并检查它是否存在时。
<小时/>您应该检查 cookie 是否存在,然后将其存储为变量并使用它,而不是然后创建它:
function set_newuser_cookie() {
if ( !is_admin() && !isset($_COOKIE['domain_newvisitor'])) {
setcookie('domain_newvisitor', 1, time()+3600*24*100, '/', 'domain.com', false);
}else
if(!is_admin() && isset($_COOKIE['domain_newvisitor'])){
$CookieValue = $_COOKIE['domain_newvisitor']
//echo or return this $CookieValue
}
}
add_action( 'init', 'set_newuser_cookie');
现在您可以通过将 $CookieValue 从服务器传递到客户端来在 js 中使用它。
关于javascript - 当用户第二次打开页面时创建cookie WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34129752/