• 歡迎訪問奇跡の海網站,本站不上傳任何資源,所有資源均來自于網絡,歡迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下載資源為網絡上收集整理而來,并且以計算機技術研究交流為目的,版權歸原作者所有,僅供大家參考,學習,不存在任何商業目的與商業用途.
  • 本站系統鏡像均來自于官方原版,ed2k可視為P2P下載鏈接。所有操作系統默認均為試用版,如有正版密鑰可以有效激活,本站不提供任何激活和相關服務。

教你如何在wordpress中設置cookie

WP其他 奇跡の海 2年前 (2017-08-25) 622次瀏覽 已收錄 0個評論 掃描二維碼

教你如何在wordpress中設置cookie
TAG:
Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由服務器端開發自己定義,對于JSP而言也可以直接寫入jsessionid,這樣服務器可以知道該用戶是否合法用戶以及是否需要重新登錄等。服務器可以利用Cookies包含信息的任意性來篩選并經常性維護這些信息,以判斷在HTTP傳輸中的狀態。Cookies最典型的應用是判定注冊用戶是否已經登錄網站,用戶可能會得到提示,是否在下一次進入此網站時保留用戶信息以便簡化登錄手續,這些都是Cookies的功用。另一個重要應用場合是“購物車”之類處理。用戶可能會在一段時間內在同一家網站的不同頁面中選擇不同的商品,這些信息都會寫入Cookies,以便在最后付款時提取信息編寫WordPress插件和主題的時候,經常需要用到cookie,比如存取用戶狀態等,我之前編寫的插件Ludou Simple Vote就用cookie來記錄用戶投票時間,以實現簡單的防止重復投票功能。

但是如果你在WordPress主題文件中直接使用php的setcookie()來發送cookie,那是完全不行的。setcookie()文檔中有一條內容:必須在任何其他輸出發送前對 cookie 進行賦值,我懷疑WordPress初始化的時候已經發送了其他輸出,才導致setcookie失效。于是深入搜索了Google,從一篇老外的文章中獲得了以下方法:

1、在主題文件functions.php中添加以下代碼,以設置cookie:

/**
 * 函數名稱,setcookie的相關參數等可以自行修改
 */
function set_newuser_cookie() {
    if (!isset($_COOKIE['sitename_newvisitor'])) {
        setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
 

add_action( 'init', 'set_newuser_cookie');
// 上面一行代碼也可以改成下面一行代碼
// add_action('after_setup_theme', 'set_newuser_cookie');

2、然后在需要調用cookie值的地方讀取cookie

if (isset($_COOKIE['sitename_newvisitor'])) {
     echo 'Welcome back!';
}
else {
     echo 'Hello new visitor!';
}

注意事項:

1、在WordPress中,任何 PHP 時間函數,例如 time()返回的時間不正確,這些時間函數返回的都是UTC+0時區的時間,如果你想獲得你在WordPress后臺 – 設置 – 常規中設置的時區時間,可以使用以下幾個WordPress的時間函數:

date_i18n('Y-m-d h:i:s');                   // 返回當地時間
current_time('timestamp');                  // 返回當地時間的 Unix 時間戳
current_time('mysql');                      // 返回適用于 MySQL 的時間格式
time() + get_option('gmt_offset') * 3600;   // 手工獲得當地時間的 Unix 時間戳
所以,發送cookie的時候,你可以將time()改成date_i18n('U')或current_time('timestamp')

2、cookie的失效時間也是需要注意的一個問題,服務器端的時間和客戶端的時間可能會不一樣,所以會導致cookie失效時間可能跟你設想的不太一樣,所以如果你通過以上方法發送了cookie,但是死活都獲取不到值,那么你可以試試將cookie的失效時間設置長點。

好了,WordPress中設置Cookies的方法就介紹到此,你可以通過以上代碼舉一反三,用于你的WordPress插件和主題開發。


版權聲明:本站所有文章和資源使用CC BY-NC-SA 4.0協議授權發布 , 轉載應當以相同方式注明文章來自“SeaOMC.COM->教你如何在wordpress中設置cookie!在下邊可以分享本文哦!
喜歡 (0)
[]
分享 (0)
奇跡の海
關于作者:
一個WordPress菜鳥!
發表我的評論
取消評論

表情 貼圖 加粗 刪除線 居中 斜體 簽到

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
中国福利彩票36选7开奖结果