2015-12-07 45 views
1

这里是我的代码:创建cookie时用户将打开页面第二次WordPress的

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的所有脑干时(需要检查我们是否有饼干或不要使用它在JavaScript代码中的其他地方):

var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/); 
if(isCookie){ 
    console.log('yes'); 
}else{ 
    console.log('no'); 
} 

它总是显示在控制台日志“是”,甚至当我删除Cookie,并访问网站的第一次。只有当用户第二次打开页面时,我如何才能更改php代码来创建cookie。

+0

只想知道你是否每次运行第一个代码后都运行第二块? –

+0

实际上是@A.J – aidadev

+0

不应该是其他方式检查cookie是否不存在然后创建其他的离开它? –

回答

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。


在这之后它正在检查它的cookie退出:

var isCookie = document.cookie.match(/^(.*;)?domain_newvisitor=[^;]+(.*)?$/); 
if(isCookie){ 
    console.log('yes'); 
}else{ 
    console.log('no'); 
} 

那么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。