如何在Wordpress中设置cookie

时间:2012-08-03 02:15:35

标签: php wordpress cookies

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

2 个答案:

答案 0 :(得分:5)

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

看那里: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 doc:

编辑: 来自php.net:

  

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

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

你必须像这样设置它:

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

答案 1 :(得分:2)

  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. 删除或取消设置Cookie:它与上述指令#1相同,只是否定时间使Cookie失效;

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