Проблемы с созданием файлов cookie на сайте WordPress

Я пытаюсь создать некоторые функциональные возможности на сайте 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);

У кого-нибудь есть идеи, почему это не сработает?

0

Решение

Файлы cookie отправляются в заголовке ответа HTTP. Поскольку контент HTML уже запущен, вы не можете вернуться к заголовку и добавить cookie. Вот почему у вас есть ошибка, как: Как исправить ошибку «Заголовки уже отправлены» в PHP

От http://php.net/setcookie:

SetCookie () определяет файл cookie для отправки вместе с остальными заголовками HTTP. Как и другие заголовки, куки должны быть отправлены до любой вывод из вашего скрипта (это ограничение протокола). Это требует, чтобы вы выполняли вызовы этой функции до любого вывода, в том числе <html> а также <head> теги, а также любые пробелы.

Вы должны позвонить set_city_cookie($city); перед любым выводом HTML:

<?php

set_city_cookie($city);
...

?>
<!DOCTYPE html>
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector