簡體   English   中英

如何在 Wordpress 中設置 cookie?

[英]How do I set a cookie in Wordpress?

我遇到了 cookie 無法提供的問題。 我們添加此 cookie 作為一種解決方法,以阻止 Safari 和 Firefox 瀏覽器中的第 3 方 cookie。

下面的代碼是我包含在我們的 Wordpress 子主題 functions.php 文件中的代碼(目前在我們的生產服務器上。

如果您認為需要進行任何更改,請有人查看並提出建議。 提前謝謝你。

function set_my_cookie() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$user_agent = strtolower($user_agent);
$user_agent = ' ' . $user_agent;
$browser    = '';

if (strpos($user_agent, 'opera') || strpos($user_agent, 'opr/')) $browser = 'Opera';
else if (strpos($user_agent, 'edge')) $browser = 'Edge';
else if (strpos($user_agent, 'chrome')) $browser = 'Chrome';
else if (strpos($user_agent, 'safari')) $browser = 'Safari';
else if (strpos($user_agent, 'firefox')) $browser = 'Firefox';
else if (strpos($user_agent, 'msie') || strpos($user_agent, 'trident/7')) $browser = 'Internet Explorer';

if ($browser == 'Safari') {
$urlparts = parse_url(home_url());
$domain   = '.' . $urlparts['host'];
$time   = strtotime("+1 year");

if (!isset($_COOKIE['kppid'])) {
$kppid = uniqid('sf', true);
$kppid = str_ireplace('.', '', $kppid);

setcookie('x', $x $time, '', $domain);
} else {
$kppid = $_COOKIE['kppid'];
setcookie('x', $x, $time, '', $domain);
}
}
}

您必須為 cookie 創建一個 init 鈎子,請參閱

add_action( 'init', 'my_setcookie' );
function my_setcookie() {
  setcookie( $name, $value, 24 * DAYS_IN_SECONDS, COOKIE_PATH, COOKIE_DOMAIN );
}

然后可以使用 setcookie 函數獲取 cookie。

echo "My cookie: " . $_COOKIE[$name];

默認情況下,WordPress 使用 cookie 來管理登錄的用戶會話和身份驗證。 如果用戶填寫評論表,它還使用 cookie 來記住用戶的姓名和電子郵件地址。

但是,您網站上的許多 WordPress 插件也可能設置自己的 cookie。 例如,OptinMonster 允許您向新訪問者和回訪者顯示不同的電子郵件選擇表單,它通過使用 cookie 來實現這一點。

如果您在您的網站上使用第三方服務,如 Google Analytics 或 Google AdSense,那么他們也可能在您的網站上設置 cookie。

因此,您也可以以相同的方式將 cookie 添加到您自己的 WordPress 網站。

您需要將代碼添加到主題的functions.php 文件或特定於站點的插件中。 如果您以前沒有這樣做過,那么請查看如何在 WordPress 中復制和粘貼代碼片段

首先我們將使用 PHP 中的setcookie()函數。 該函數接受以下參數。

  • 餅干名稱
  • 餅干值
  • 過期(可選:設置 cookie 過期的時間段)
  • 路徑(可選,默認情況下它將使用站點的根目錄)
  • 域(可選,默認使用您網站的域)
  • 安全(可選,如果為 true,則僅通過 HTTPS 傳輸 cookie 數據)
  • httponly(可選,當設置為 true 時,cookie 只能通過 HTTP 訪問,不能被腳本使用)

現在讓我們向您的 WordPress 網站添加一個代碼片段。 此代碼在 cookie 中存儲用戶訪問您網站時的確切時間戳。

function wpb_cookies_tutorial1() { 
$visit_time = date('F j, Y  g:i a');
if(!isset($_COOKIE[$wpb_visit_time])) {
// set a cookie for 1 year
setcookie('wpb_visit_time', $current_time, time()+31556926);
}
} 

您現在可以訪問您的網站,然后檢查您的瀏覽器 cookie。 您會找到一個名為wpb_visit_time的 cookie。

隨意修改代碼以使其對您的網站更有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM