如何在 Wordpress 中设置 cookie

Posted

技术标签:

【中文标题】如何在 Wordpress 中设置 cookie【英文标题】:How to set a cookie in Wordpress 【发布时间】:2012-08-01 01:36:58 【问题描述】:

我正在尝试在 wordpress 中设置一个 cookie。我的 cookie 设置如下:

<?php setcookie('test', 'test', 0, '/', '/');  ?>

在我的主题的 header.php 中,但是当我转到浏览器查看我的网站时出现此错误

Warning: Cannot modify header information - headers already sent by (output started at /home/content/19/9468119/html/wp-content/themes/twentyeleven/header.php:27) in /home/content/19/9468119/html/wp-content/themes/twentyeleven/header.php on line 201

而且我的 cookie 也没有设置。如何在 wordpress 中设置 cookie?

我也试过了

 function set_new_cookie() 
    setcookie('test', 'test', 0, '/', '/');

add_action( 'init', 'set_new_cookie');

【问题讨论】:

在 WordPress 中,您应该使用 COOKIEPATHCOOKIE_DOMAIN,否则您可能会遇到 cookie 无法正常工作的问题(请参阅 this answer) 【参考方案1】:

你必须在输出任何东西之前设置它们

看那里:How can I set, get and destroy cookies in Wordpress?

如果您在 function.php 中使用主题

function set_new_cookie() 
    //setting your cookies there

add_action( 'init', 'set_new_cookie');

您的到期日期为 0,因此您的 cookie 将立即被删除,请查看 php 文档:

编辑: 来自 php.net:

如果设置为 0 或省略,cookie 将在结束时过期 会话(当浏览器关闭时)。

http://php.net/manual/en/function.setcookie.php

例如,您必须像这样设置它:

setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */

【讨论】:

建议的内容不起作用,我尝试放入我的 function.php 页面,但它给了我关于语法的 php 错误 这是正确的语法,这里有更多示例:wptheming.com/2011/04/set-a-cookie-in-wordpress 你有什么错误? 我也尝试了您的代码 Jerome,但它没有创建我的 cookie...我需要在某个地方调用它吗?以及如何? 你需要在你使用的主题链接的function.php文件中设置 虽然这个答案可能对 OP 有所帮助,但它并不是最好的答案。在 WP 中,你应该使用 COOKIEPATHCOOKIE_DOMAIN,否则你会遇到 cookie 正常工作的问题(参见 this answer)【参考方案2】:

    设置 Cookie: 下面的示例将设置过期 一小时(60*60 秒) 的 cookie,因为它使用 COOKIEPATH 设置并且 COOKIE_DOMAIN 是由 WordPress 定义的根据您的站点路径和域。

    setcookie( 'my-cookie-name', 'my-cookie-value', time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
    

    获取 Cookie: 可以通过使用包含关联数组的变量 $_COOKIE 来获取 cookie。

    $myCookie = isset( $_COOKIE['my-cookie-name'] ) ? $_COOKIE['my-cookie-name'] : 'Not Set!!';
    

    Delete or Unset a Cookie: 和上面的指令#1一样,只是cookie的过期时间为负数;

    setcookie( 'my-cookie-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN );
    

【讨论】:

我更喜欢使用 WordPress 常量以秒为单位,例如 MONTH_IN_SECONDS,而不是输入整数。

以上是关于如何在 Wordpress 中设置 cookie的主要内容,如果未能解决你的问题,请参考以下文章

CSS 如何:在WordPress 2.7中设置作者评论

PHP 如何在WordPress中设置自己的默认Gravatar

如何:在wordpress2.7中设置作者评论的样式

如何在WordPress中设置自己的默认Gravatar

如何使用 wp_insert_post 在 wordpress 中设置 POST 永久链接/slug

在本地 MAMP 服务器中设置 wordpress