11

我正在尝试在 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');
4

2 回答 2

15

您必须在输出任何内容之前设置它们

看看那里:如何在 Wordpress 中设置、获取和销毁 cookie?

如果您在 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 */
于 2012-08-03T02:23:54.333 回答
13
  1. 设置 Cookie:下面的示例将设置过期一小时(60*60 秒)的 cookie,因为它使用COOKIEPATH设置,并且COOKIE_DOMAIN是由 WordPress 根据您的站点路径和域定义的。

    setcookie( 'my-cookie-name', 'my-cookie-value', time() + 3600, COOKIEPATH, COOKIE_DOMAIN );
    
  2. 获取 Cookie:可以通过使用包含关联数组的变量 $_COOKIE 来获取 cookie。

    $myCookie = isset( $_COOKIE['my-cookie-name'] ) ? $_COOKIE['my-cookie-name'] : 'Not Set!!';
    
  3. Delete or Unset a Cookie: 同上面的指令#1,只是cookie过期时间为负;

    setcookie( 'my-cookie-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN );
    
于 2015-06-05T11:52:46.043 回答