2013-12-23 62 views
1

我使用此代碼在wordpress站點中設置cookie。當我將這段代碼放在header.php中時,它完美地工作。但是,當我將此代碼放在單獨的模板文件中時,它不起作用。 頭文件編號:(HTML標記之前)PHP setcookie()函數不能在Wordpress模板文件中工作

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(); ?> 

任何幫助將高度讚賞。 謝謝& Regards

回答

7

問題是我沒有提到函數的路徑。代碼爲特定頁面創建cookie。這裏是更正的功能:

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

輸出開始後,您無法設置cookie。 Cookie和所有其他HTTP頭信息只能在輸出開始前設置。 輸出可以表示任何內容,從PHP標記之前的空白空間到實際的HTML內容。

你不應該把餅乾放在身體裏。所有的邏輯都應該在開始輸出模板之前完成。

+0

我已經在header.php中添加了代碼,並在HTML標記及其工作之前。在模板文件中,我在調用get_header()函數之前添加了它。我也嘗試刪除get_header()函數,然後對已啓動的HTML標記進行硬編碼並在此之前放置代碼,但這並不起作用。 – akifquddus

+0

將代碼替換爲「echo」blah blah blah「;'如果該回顯不是查看源代碼時看到的第一件事,它將不起作用,並且您需要重新安排代碼 – exussum

+0

剛剛檢查過,它是頁面上的第一件事。 也通過在header.php中放置echo「checking」來檢查,並得到「blah blah checking」作爲輸出。由於echo「blah blah」在模板文件中。 – akifquddus