繁体   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