【问题标题】:Setting Cookie in WordPress on localhost在 localhost 上的 WordPress 中设置 Cookie
【发布时间】:2012-04-02 12:19:09
【问题描述】:

我在我的 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');

这会输出 test: 而不打印 cookie。

【问题讨论】:

    标签: php wordpress setcookie


    【解决方案1】:

    我会让 wordpress 为我找出合适的域,例如:str_replace('http://www','',get_bloginfo('url'))。也就是说,如果 wordpress 默认类别不够用。

    一般来说,使用 Wordpress 默认类别和标签结构比原始 cookie 更可取。那么为什么又需要一个 cookie?

    【讨论】:

    • 请查看我的更新以了解“为什么”的解释。令人困惑。
    【解决方案2】:

    Chrome 存在一个已知限制

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

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

    【讨论】:

    • 我不知道。但是再一次,内置的类别不能胜任吗?
    • +1 用于指出错误。不过,print($_COOKIE["category"]); 在其他浏览器中也没有任何作用。
    【解决方案3】:

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

    这是我现在的代码:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-07
      • 1970-01-01
      • 2017-04-01
      • 2016-03-29
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多