基于page-wordpress在theme header.php中设置cookie

基于page-wordpress在theme header.php中设置cookie,php,wordpress,cookies,wordpress-theming,setcookie,Php,Wordpress,Cookies,Wordpress Theming,Setcookie,我正试图在我的wordpress theme header.php文件中设置cookie <? // Set cookie if (is_page('437')) { setcookie("DM", "mis", time()+31536000); } else if (is_page('441')) { setcookie("DM", "w2p", time()+31536000); } echo $_COOKIE["DM"]; print_r($_COOKIE); // C

我正试图在我的wordpress theme header.php文件中设置cookie

<?
// Set cookie
if (is_page('437')) {
  setcookie("DM", "mis", time()+31536000);
} else if (is_page('441')) {
  setcookie("DM", "w2p", time()+31536000);
}

echo $_COOKIE["DM"];
print_r($_COOKIE);

// Check cookie to load style
if (!is_front_page()){ 
  if (isset($_COOKIE["DM"])) {
    if ($_COOKIE["DM"] == "mis") { ?>
      <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/mis.css" />
  <? } else if ($_COOKIE["DM"] == "w2p") { ?>
      <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/w2p.css" />
   <? }
  }
}
?>
我已经找到了一些关于这方面的信息,但它似乎都使用functions.php文件,这对我来说不是一个真正的选项,因为我正在根据页面设置cookie

我只是想知道我该如何着手做这件事,或者可能的解决办法是什么

这是我的header.php文件中的代码

<?
// Set cookie
if (is_page('437')) {
  setcookie("DM", "mis", time()+31536000);
} else if (is_page('441')) {
  setcookie("DM", "w2p", time()+31536000);
}

echo $_COOKIE["DM"];
print_r($_COOKIE);

// Check cookie to load style
if (!is_front_page()){ 
  if (isset($_COOKIE["DM"])) {
    if ($_COOKIE["DM"] == "mis") { ?>
      <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/mis.css" />
  <? } else if ($_COOKIE["DM"] == "w2p") { ?>
      <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_directory'); ?>/css/w2p.css" />
   <? }
  }
}
?>


设置cookie,将其排队发送到客户端,但不将其添加到$\u cookie数组。我相信$\u COOKIE数组只在初始请求时构造和填充一次。您想要访问的任何cookie都会转到客户端,并在下一页的请求中发送回,然后可用

我应该补充一点,在查看437或441页时,cookie确实起作用,但一旦我导航到另一页,cookie似乎没有值,但我没有做任何事情来删除它的值。我会检查它们是否在以前的请求中没有被设置。在PHP.net手册中,“一旦设置了COOKIE,就可以在下一页加载时使用$\u COOKIE或$HTTP\u COOKIE\u VARS数组访问它们。请注意,在PHP4.1.0中可以使用$\u COOKIE等超全局变量。COOKIE值也存在于$\u请求中。”--->据我所知,一个集合cookie需要一个新的页面加载。@Adam和this:cookie在下一次加载cookie应该可见的页面之前不会可见。要测试cookie是否成功设置,请在cookie过期之前在下一个加载页面上检查cookie。Expire time通过Expire参数设置。调试COOKIE存在的一个好方法是简单地调用print_r($_COOKIE);。