在本地主机上的WordPress中设置Cookie


Setting Cookie in WordPress on localhost

我在WordPress安装中设置cookie时遇到了一点问题。

这是我的代码:

function write_cookies() {
    setcookie("category", get_query_var('cat'), time() + 3600 * 24, COOKIEPATH, '', false);
    print($_COOKIE["category"]);
}
add_action('init', 'write_cookies');

理论上,这应该输出categoryId,但似乎什么都不起作用。

我在localhost上读到了这一点,在cookie域工作时提供了一个空白字符串,但我无法获得任何类型的输出。我还尝试了'localhost''.localhost''127.0.0.1'falseNULL作为域。COOKIEPATH常量当前输出'/'

我正在通过Chrome浏览器阅读cookie,页面上的cookie似乎没有任何变化。

更新:

感谢到目前为止的答案,我将解释为什么在这种情况下我需要cookie。。。

基本上,在我的帖子页面上,我希望显示同一类别中的其他帖子。对于那些有多个类别的人,这意味着存储用户到达帖子所走的路线。我将举一个真实世界的例子:

用户将从主页导航到行业新闻,发布题为"制造业新资金振兴当地政客"的帖子。现在,在本节的其他帖子中,我想展示行业新闻帖子,但由于有问题的帖子是在行业新闻和政治新闻下设置的,我如何判断采取了哪条路线?

在第一个例子中,这是为了分析wp_get_referer()来确定哪个类别出现在帖子之前。然而,如果我随后使用"其他帖子"部分转到题为"制造业的新区域发展"的帖子,该帖子被归类为行业新闻和区域新闻,则wp_get_referer将返回上一个帖子,而不是我逻辑中要求的类别。

我的解决方案是(在访问类别页面时)存储类别的id,并在未来的所有逻辑中使用它来确定要在"其他帖子"部分显示的正确类别。

我知道这很困惑,但我在设计和客户需求方面都很有限,无法提供这种特定的流程。

按照建议,我已经更新了代码以显示:

function write_cookies() {
    setcookie("category", get_query_var('cat'), false, '/', str_replace('http://www','',get_bloginfo('url')));
    print('test: '.$_COOKIE["category"]);
}
add_action('init', 'write_cookies');

这将在不打印cookie的情况下输出test:

我会让wordpress用str_replace('http://www','',get_bloginfo('url'))之类的东西为我找出合适的域。如果wordpress默认类别还不够的话。

一般来说,使用Wordpress默认的类别和标记结构比原始cookie要好得多。那你为什么还需要一块饼干呢?

Chrome 存在已知的限制

http://code.google.com/p/chromium/issues/detail?id=56211

您无法设置/访问http://localhost饼干。Chrome中的奇怪问题。

我在非WordPress安装上测试了各种Cookie域,发现在localhost环境中,唯一成功设置变量的域是'',即空字符串。

这是我现在的代码:

function write_cookies() {    
    setcookie("category", get_query_var('cat'), false, '/', '',false);
}

我还对它进行了调整,使其从post循环中调用,而不是从"init"事件中调用,这使我可以访问比init事件更多的变量来设置到cookie中。