Php wordpress站点上的setcookie问题

Php wordpress站点上的setcookie问题,php,wordpress,setcookie,Php,Wordpress,Setcookie,起初,我的setcookie()是: $school = "Some Value"; setcookie("default_school", $school, time()+3600); var_dump($_COOKIE); 这不起作用,所以我进行了一些搜索,发现我可能只需要设置一个路径,所以我将其更改为: $school = "Some Value"; setcookie("default_school", $school, time()+3600, "/", ".mydomain.com

起初,我的
setcookie()
是:

$school = "Some Value";
setcookie("default_school", $school, time()+3600);
var_dump($_COOKIE);
这不起作用,所以我进行了一些搜索,发现我可能只需要设置一个路径,所以我将其更改为:

$school = "Some Value";
setcookie("default_school", $school, time()+3600, "/", ".mydomain.com");
var_dump($_COOKIE);
这仍然不起作用,所以我做了更多的调查,并确定我的问题一定是我设置cookie太晚了。于是我开始检查我的头是否设置在代码的某些部分,需要返回
bool(false)

首先是我的
index.php
的顶部,然后是我的
header.php
的顶部,但结果仍然相同;它们都是真的吗

我觉得这应该很简单,我什么也做不到。如果能朝着正确的方向努力,我们将不胜感激

谢谢, 艾萨克

编辑:只是尝试将它放在init钩子之前,结果返回false。然后我将setcookie函数放在那里,但仍然没有运气

编辑2:最终添加:

function set_user_cookie() {
    $school = "Some Value";
    setcookie('default_school', $school, time()+3600);
}

add_action('init', 'set_user_cookie');

现在它工作得很好

要调试这种情况,应首先启用正确的错误报告(不要在生产环境中使用):

如果随后调用
setcookie()
,它将发出警告,告诉您输出从何处开始

如果您不能做到这一点,您可以通过以下方式使用
headers\u sent()
来确定输出从何处开始:

if (headers_sent($file, $line)) {
    echo "Output started in $file on line $line\n";
}

在我的本地网站上对我有效…你的cookie设置关闭了吗?嗯,这很奇怪,不是。谢谢你的建议。我最终让它工作了,见编辑2。
error_reporting(-1);
ini_set('display_errors', 'On');
if (headers_sent($file, $line)) {
    echo "Output started in $file on line $line\n";
}