php - 在 WordPress 网站中创建 cookie 的问题
问题描述
我正在尝试在 WordPress 网站中创建一些功能,当用户访问存储他们访问过的位置页面所在城市的位置页面时,它将创建一个 cookie。但是,我从 WordPress 收到一个错误,我无法修改标题信息。我在我的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);
有没有人知道为什么这不起作用?
解决方案
Cookie 在 HTTP 响应标头中发送。由于 HTML 内容已经开始,您无法返回到标题并添加 cookie。这就是为什么你会遇到这样的错误:如何修复 PHP 中的“标头已发送”错误
setcookie()定义了一个 cookie 与其余的 HTTP 标头一起发送。与其他标头一样,必须在脚本的任何输出之前发送 cookie (这是协议限制)。这要求您在任何输出之前调用此函数,包括
<html>
和<head>
标记以及任何空格。
你应该set_city_cookie($city);
在任何 HTML 输出之前调用你的:
<?php
set_city_cookie($city);
...
?>
<!DOCTYPE html>
推荐阅读
- excel - 通过 Excel VBA 代码使用 Outlook 发送 CDO 电子邮件
- r - 在条形图中使用 DataFrame
- arrays - 当组件 0 更改时,重置 UIPickerView 的第一个组件的值
- python - 使用 psycopg2 从 PostgreSQL 中基于模式的表中选择数据
- pygame - Pygame 不会根据我的角色属性更改我的精灵
- algorithm - 如何制作具有 6 个节点的完整二叉树?
- java - Why do these errors come up?
- graalvm - 是否可以将预编译的 js 存储和加载到 org.graalvm.polyglot.Context
- java - java - 如何从对象列表中的Java列表中获取最佳匹配对象?
- django - 如何在我的 Django 模型上将值过滤器与某个外键字段的查询集结合起来