2012-08-03 137 views
5

我試圖在wordpress中設置cookie。我有我的cookie設置是這樣的:如何在Wordpress中設置Cookie

<?php setcookie('test', 'test', 0, '/', '/'); ?> 

在我的主題的header.php,但是當我去我的瀏覽器來瀏覽我的網站,我得到這個錯誤

Warning: Cannot modify header information - headers already sent by (output started at /home/content/19/9468119/html/wp-content/themes/twentyeleven/header.php:27) in /home/content/19/9468119/html/wp-content/themes/twentyeleven/header.php on line 201 

,也是我的餅乾犯規組。如何在wordpress中設置cookie?

我也試過這種

function set_new_cookie() { 
    setcookie('test', 'test', 0, '/', '/'); 
} 
add_action('init', 'set_new_cookie'); 
+0

在WordPress中,你應該使用'COOKIEPATH'和'COOKIE_DOMAIN',否則你可能有餅乾正常工作的問題(見[這個答案](http://stackoverflow.com/a/ 30665891/870729)) – 2015-06-11 17:25:06

回答

3

你必須設置在他們面前輸出任何東西

看看有:How can I set, get and destroy cookies in Wordpress?

如果您使用的是function.php主題

function set_new_cookie() { 
    //setting your cookies there 
} 
add_action('init', 'set_new_cookie'); 

您的到期日期爲0周所以你的cookies會被正確刪除掉看看PHP文檔:

http://php.net/manual/en/function.setcookie.php

必須設置像這樣的例子:

setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 
+0

建議什麼是行不通的,我試着放在我的function.php頁面,但它給了我關於語法的錯誤 – user1269625 2012-08-03 02:31:38

+0

這是正確的語法在這裏是更多的例子:http://wptheming.com/2011/04/set-a-cookie-in-wordpress /你有什麼錯誤? – 2012-08-03 02:33:57

+0

我試過你的代碼Jerome也沒有創建我的cookie ...我需要將它稱爲某處嗎?如何? – user1269625 2012-08-03 02:38:13

1
  1. 設置cookie: 的下面的示例將設置過期的cookie爲一小時(60 * 60秒),因爲它設置爲COOKIEPATHCOOKIE_DOMAIN由WordPress根據您的網站路徑和域定義。

    setcookie('my-cookie-name', 'my-cookie-value', time() + 3600, COOKIEPATH, COOKIE_DOMAIN); 
    
  2. 獲得一個Cookie: 入門cookie可以通過使用變量$ _COOKIE其中包含關聯數組來完成。

    $myCookie = isset($_COOKIE['my-cookie-name']) ? $_COOKIE['my-cookie-name'] : 'Not Set!!'; 
    
  3. 刪除或取消設置一個Cookie:它是與上述相同指令#1,只是用負的時間來使cookie失效;

    setcookie('my-cookie-name', '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN);