用户将第二次打开wordpress时创建cookie

时间:2015-12-07 09:00:03

标签: javascript php wordpress cookies

这是我的代码:

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');
} 

它总是在控制台日志中显示“是”,即使是第一次删除cookie和访问网站时也是如此。如何在用户第二次打开页面时更改php代码以创建cookie。

1 个答案:

答案 0 :(得分:1)

您将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。

在此之后检查它是否退出:

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');

现在,您可以在js中使用$ CookieValue,方法是将其从服务器传递到客户端。