Php 在WordPress站点中创建Cookie时出现问题
我试图在WordPress站点中创建一些功能,当用户访问存储他们访问过的位置页面所在城市的位置页面时,这些功能将创建cookie。然而,我从WordPress得到一个错误,我不能修改标题信息。我在Php 在WordPress站点中创建Cookie时出现问题,php,wordpress,cookies,Php,Wordpress,Cookies,我试图在WordPress站点中创建一些功能,当用户访问存储他们访问过的位置页面所在城市的位置页面时,这些功能将创建cookie。然而,我从WordPress得到一个错误,我不能修改标题信息。我在functions.php文件中包含了以下函数: function set_city_cookie($city) { if(!isset($_COOKIE['city_cookie'])) { // set a cookie setcookie('city_cookie'
functions.php
文件中包含了以下函数:
function set_city_cookie($city) {
if(!isset($_COOKIE['city_cookie'])) {
// set a cookie
setcookie('city_cookie', $city, time()+30);
$last_city=$_COOKIE['city_cookie'];
return $last_city;
}
}
add_action('init', 'set_city_cookie');
然后,我在我的single locations.php
中调用了该函数,如下所示:
set_city_cookie($city);
有人知道为什么这不起作用吗?Cookies在HTTP响应头中发送。由于HTML内容已经启动,您无法返回到标题并添加cookie。这就是为什么会出现这样的错误: 发件人: setcookie()定义要与其余HTTP头一起发送的cookie。与其他头一样,cookie必须在脚本的任何输出之前发送(这是协议限制)。这要求您在任何输出之前调用此函数,包括
和
标记以及任何空格
你应该调用你的set\u city\u cookie($city)代码>在任何HTML输出之前:
<?php
set_city_cookie($city);
...
?>
<!DOCTYPE html>
这是有道理的,当我调用html
上方区域中的函数时,我不再得到任何错误。然而,我的函数似乎仍然没有实际设置任何cookies。当我设置一个变量时,var\u dump
等我只得到NULL
您是否尝试print\r($\u COOKIE)代码>?我刚试过,得到一个像这样的数组,上面有一堆数字/字母,其中点是:[has_js]=>1[wordpress_logged_….]=>..[wp-settings-1]=>..[wp-settings-time-1]=>..
我猜这只是wp cookie。我没有看到我的city\u cookie
在页面加载时设置了$\u cookie,这是由于web的无状态特性。在重新加载页面时可以访问它。如果希望立即访问,则必须使用$city变量。