Проблемы с созданием файлов cookie на сайте WordPress - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать на сайте 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 голосов
/ 07 ноября 2018

Файлы 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...