2012-05-16 32 views
1

我想在我的wordpress主題header.php文件中設置一個cookie。基於頁面設置主題header.php中的Cookie - wordpress

我已經找到了一些有關此信息,但它似乎都使用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" /> 
    <? } 
    } 
} 
?> 

回答

2

設置cookie,將其排隊以發送給客戶端,但不會將其添加到$ _COOKIE數組中。我相信$ _COOKIE數組僅在最初的請求時被構建和填充一次。您想要獲取的任何cookie都會發送到客戶端,並在下一頁的下一個請求中發回,然後可用。

+0

我應該補充說,查看頁面437或441時,cookie可以工作,但是一旦我導航到另一頁面,cookie似乎沒有值,但我沒有做任何操作來刪除它的值。 – Adam

+0

我會檢查他們是否沒有被設置在更早的請求。在PHP.net手冊中,「一旦cookie被設置好了,它們就可以在下一頁加載$ _COOKIE或$ HTTP_COOKIE_VARS數組。」請注意,像$ _COOKIE這樣的超級全局變量可以在PHP 4.1.0中使用。存在於$ _REQUEST中。「--->據我所知,設置的cookie需要新的頁面加載。 – Ray

+0

@Adam也是這樣的:在下一次加載該cookie應該可見的頁面之前,Cookie不會變得可見。要測試cookie是否設置成功,請在cookie過期之前在下一個加載頁面上檢查cookie。過期時間通過expire參數設置。調試cookie存在的一個好方法是簡單地調用print_r($ _ COOKIE);. – Ray