[英]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()
函数。 该函数接受以下参数。
现在让我们向您的 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.