【问题标题】:PHP setcookie() function not working in Wordpress Template FilePHP setcookie() 函数在 Wordpress 模板文件中不起作用
【发布时间】:2014-01-12 02:39:40
【问题描述】:

我正在使用此代码在 wordpress 网站中设置 cookie。当我将此代码放在 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(); ?>

任何帮助将不胜感激。 感谢和问候

【问题讨论】:

    标签: php wordpress cookies setcookie


    【解决方案1】:

    您无法在输出开始后设置 cookie。 Cookie 和所有其他 HTTP 标头信息只能在输出开始之前设置。 输出可以表示从 PHP 标记之前的空白到实际 HTML 内容的任何内容。

    您永远不必将 cookie 放入主体中。所有逻辑都应该在开始输出模板之前完成。

    【讨论】:

    • 我在 header.php 中添加了 HTML 标记及其工作之前的代码。在模板文件中,我在调用 get_header() 函数之前添加了它。我也尝试过删除 get_header() 函数,然后对启动的 HTML 标记进行硬编码并将代码放在其前面,但这也不起作用。
    • echo "blah blah blah";替换代码
    • 刚刚检查,这是页面上的第一件事。还通过在 header.php 中放置 echo "checking" 进行检查,并得到 "blah blah checks" 作为输出。因为 echo "blah blah" 在模板文件中。
    • 在 Wordpress 中经常出现这种情况,插件脚本在它们的末尾有随机的空白,需要删除。默认情况下,Wordpress 会抑制错误,告诉您在哪里查看,因此在您要调试的代码之前添加它以获得一些线索:ini_set('display_errors',1); error_reporting(E_ALL ^ E_STRICT);
    【解决方案2】:

    问题是我没有在函数中提到路径。该代码正在为特定页面创建 cookie。这是更正后的函数:

    setcookie('City', "Edmonton43003", (time()+3600), "/");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多