如何在Wordpress中设置cookie

use*_*625 7 php cookies wordpress

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

<?php setcookie('test', 'test', 0, '/', '/');  ?>
Run Code Online (Sandbox Code Playgroud)

在我的主题的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
Run Code Online (Sandbox Code Playgroud)

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

我也尝试过这个

 function set_new_cookie() {
    setcookie('test', 'test', 0, '/', '/');
}
add_action( 'init', 'set_new_cookie');
Run Code Online (Sandbox Code Playgroud)

Rez*_*mun 10

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

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

    $myCookie = isset( $_COOKIE['my-cookie-name'] ) ? $_COOKIE['my-cookie-name'] : 'Not Set!!';
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除或取消设置 Cookie:与上述指令 #1 相同,只是使 Cookie 过期时间为负数;

    setcookie( 'my-cookie-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN );
    
    Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢使用 WordPress 常量来表示时间(以秒为单位),例如 MONTH_IN_SECONDS,而不是输入整数。 (2认同)

Jer*_*sia 6

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

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

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

function set_new_cookie() {
    //setting your cookies there
}
add_action( 'init', 'set_new_cookie');
Run Code Online (Sandbox Code Playgroud)

您的到期日期为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 */
Run Code Online (Sandbox Code Playgroud)

  • 虽然此答案可能对OP有所帮助,但这不是最佳答案。在WP中,您应该使用`COOKIEPATH`和`COOKIE_DOMAIN`,否则您将无法正常使用Cookie(请参阅[此答案](http://stackoverflow.com/a/30665891/870729)) (2认同)