【问题标题】:create cookie when user will open page second time wordpress当用户第二次打开页面 wordpress 时创建 cookie
【发布时间】:2015-12-07 09:00:02
【问题描述】:

这是我的代码:

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。

【问题讨论】:

  • 只是想知道您是否每次都在第一个代码之后运行第二个代码?
  • 不应该是其他方式检查cookie是否不存在然后创建否则离开它?
  • isCookie 记录到控制台,查看每种情况下它是什么/包含什么。
  • 你能告诉我你的意思是“离开它”吗?你的意思是这个 ? @A.J
  • 我按照你说的做了,对于这个 cookie 'domain_newvisitor' 它是一样的。第一次和第二次都存在@CBroe

标签: javascript php wordpress cookies


【解决方案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每次都会退出。当您是第一次创建它并检查它是否退出时。


您应该检查 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 中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2022-01-22
    相关资源
    最近更新 更多