Функция 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(); ?>
Любая помощь будет высоко оценена. Спасибо и с уважением
2 answers
Вы не можете установить файл cookie после запуска вывода. Файлы cookie и вся другая информация HTTP-заголовка могут быть установлены только до начала вывода. Вывод может означать что угодно - от пустого места перед тегами PHP до фактического содержимого HTML.
Вам никогда не придется класть печенье в тело. Вся логика должна быть выполнена до начала вывода шаблонов.
Проблема заключалась в том, что я не упомянул путь в функции. Код создавал файл cookie для конкретной страницы. Вот исправленная функция:
setcookie('City', "Edmonton43003", (time()+3600), "/");