在WordPress网站中创建Cookie时出现问题

时间:2018-11-07 19:47:32

标签: php wordpress cookies

我正在尝试在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); 

有人对为什么这样不起作用有任何想法吗?

1 个答案:

答案 0 :(得分:1)

在HTTP响应标头中发送cookie。由于HTML内容已经启动,因此您无法返回到标题并添加cookie。这就是为什么您遇到类似How to fix “Headers already sent” error in PHP

的错误的原因

来自http://php.net/setcookie

  

setcookie()定义要与其他HTTP标头一起发送的cookie。与其他标头一样,必须在脚本的任何输出之前 发送cookie(这是协议限制)。这就要求您在所有输出(包括<html><head>标签以及任何空白)之前都先调用此函数。

您应该在任何HTML输出之前调用set_city_cookie($city);

<?php

set_city_cookie($city); 
...

?>
<!DOCTYPE html>