我正在尝试在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');
答案 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)
设置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!!';
删除或取消设置Cookie:它与上述指令#1相同,只是否定时间使Cookie失效;
setcookie( 'my-cookie-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN );