Функция PHP setcookie() не работает в файле шаблона Wordpress


Я использую этот код для установки файла cookie на сайте WordPress. Когда я помещаю этот код в header.php , это работает отлично. Но когда я помещаю этот код в отдельный файл шаблона, он не работает. Код файла заголовка: (Перед тегом HTML)

if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}

Код файла шаблона WP: (Код находится перед функцией get_header())

<?php 
if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}
?>
<?php
/*
    Template Name: Community Landing Page
*/
get_header(); ?>

Любая помощь будет высоко оценена. Спасибо и с уважением

Author: akifquddus, 2013-12-24

2 answers

Вы не можете установить файл cookie после запуска вывода. Файлы cookie и вся другая информация HTTP-заголовка могут быть установлены только до начала вывода. Вывод может означать что угодно - от пустого места перед тегами PHP до фактического содержимого HTML.

Вам никогда не придется класть печенье в тело. Вся логика должна быть выполнена до начала вывода шаблонов.

 8
Author: exussum, 2013-12-23 21:09:45

Проблема заключалась в том, что я не упомянул путь в функции. Код создавал файл cookie для конкретной страницы. Вот исправленная функция:

setcookie('City', "Edmonton43003", (time()+3600), "/");
 8
Author: akifquddus, 2013-12-24 10:26:33