Я пытаюсь создать некоторые функциональные возможности на сайте 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. Как и другие заголовки, куки должны быть отправлены до любой вывод из вашего скрипта (это ограничение протокола). Это требует, чтобы вы выполняли вызовы этой функции до любого вывода, в том числе
<html>
а также<head>
теги, а также любые пробелы.
Вы должны позвонить set_city_cookie($city);
перед любым выводом HTML:
<?php
set_city_cookie($city);
...
?>
<!DOCTYPE html>
Других решений пока нет …