Page specific cookie

时间:2017-05-09 作者:user3645783

我创建了一个只对特定受众可用的登录页。当用户访问此页面时,我想创建一个cookie,在另一个页面上完成预订表单后可以传递该cookie。我正在使用Wordpress,不知道如何设置页面特定的cookie。我可以通过函数设置全局cookie。php。现在,我已经试用了一个使用is\\u page参数检查是否正在查看特定页面的函数:

    add_action( \'init\', \'setting_my_first_cookie\' );
    function setting_my_first_cookie() {

    if (is_page(\'name-of-page\')) { 

    $cookie_name = "user";
    $cookie_value = "John Doe";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
    }
    }
你知道我哪里做错了吗?或者使用cookie是一种完全错误的方法。如果是那样的话,我希望你能给我一个提示,告诉我如何处理这样的问题。非常感谢您的帮助!

2 个回复
最合适的回答,由SO网友:Milo 整理而成

WordPress还不知道这是不是一个页面,init 在运行查询之前激发。你需要挂接以后的动作,比如wp. 看看Action Reference 查看请求期间的操作顺序。

SO网友:Nathaniel Flick

您可以始终使用cookie的会话插入并与jQuery一起运行,在函数中设置它:

$(function() {
 // set landingPage to 1 to set the session to "True"
 // or check for not landingPage (!sessionStorage.landingPage)
 // to do something if it\'s not set
 sessionStorage.landingPage = 1;
}); 
然后,您可以查看用户是否拥有该会话并在所有其他页面上执行该会话(反之亦然,请切换else操作):

$(function() {
    // if landingPage session is not set:
    if (sessionStorage.landingPage) {
        // do something here if landingPage is set to 1
    } else {
        // do nothing, or set landingPage to 1 for next time
    }
});

结束

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!