【问题标题】:'Header already sent' Wordpress Plugin'标题已发送' Wordpress 插件
【发布时间】:2019-10-09 22:28:19
【问题描述】:

我正在尝试制作一个简单的插件,在用户第一次访问该网站时欢迎他们,但我不断收到“标头已发送”错误。

我知道此错误与未在标头中发送的 cookie 有关。而且我已经找到了一些解决方案,但没有一个可以在插件中使用。我可以在插件中完成所有这些吗? (我正在尝试在 wordpress 小部件中写这个)

if (!isset($_COOKIE['visited'])) {
  setcookie ('visited', 'yes', time() + 3600);      
  echo "Welcome.";
}
else{                                               
  echo "Welcome back";
}

因此,如果用户第一次访问该网站,我希望他看到“欢迎”,但如果他是回访者,我希望显示“欢迎回来”,

【问题讨论】:

  • 由于 cookie 在响应标头中发送,并且标头在 任何输出之前发送,因此您还需要在任何输出之前设置 cookie。
  • 您可以在 JS 中设置 cookie,然后使用 PHP 读取它。如果不存在,则为新用户;如果存在,则为老用户。您还可以将代码移动到任何输出之前的某个位置(并将问候字符串存储在一个变量中以供以后使用)。

标签: php wordpress cookies plugins


【解决方案1】:

尝试使用 return 而不是 echo,这样响应由插件管理

    if (!isset($_COOKIE['visited'])) {
      setcookie ('visited', 'yes', time() + 3600);      
      return  "Welcome.";
    }
    else{                                               
      return  "Welcome back";
    }

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 2011-10-04
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多