PHP setcookie()函数无法在Wordpress模板文件中使用

aki*_*dus 3 php cookies wordpress setcookie

我正在使用此代码在wordpress站点中设置cookie.当我将此代码放在header.php中时,它完美地运行.但是,当我将此代码放在单独的模板文件中时,它不起作用.头文件代码:(在HTML标记之前)

if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}
Run Code Online (Sandbox Code Playgroud)

WP模板文件代码:(代码在get_header()函数之前)

<?php 
if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}
?>
<?php
/*
    Template Name: Community Landing Page
*/
get_header(); ?>
Run Code Online (Sandbox Code Playgroud)

任何帮助将受到高度赞赏.感谢和问候

exu*_*sum 9

输出开始后,您无法设置cookie.Cookie和所有其他HTTP标头信息只能在输出开始之前设置.输出可以表示从PHP标记之前的空白空间到实际的HTML内容.

你不应该把饼干放在体内.所有逻辑都应在开始输出模板之前完成.

  • 在 Wordpress 中,这通常是这种情况,插件脚本末尾有随机的空白,需要删除。默认情况下,Wordpress 会抑制错误,告诉您在哪里查看,因此在要调试的代码之前添加它以获得一些线索:`ini_set('display_errors',1); 错误报告(E_ALL ^ E_STRICT);` (2认同)

aki*_*dus 9

问题是我没有提到函数中的路径.代码正在为特定页面创建cookie.这是更正后的功能:

setcookie('City', "Edmonton43003", (time()+3600), "/");
Run Code Online (Sandbox Code Playgroud)