• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~! QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

WordPress 中设置cookie及调用方法解释

WP其他 奇跡の海 2年前 (2017-04-27) 365次浏览 已收录 0个评论 扫描二维码

前言

编写 WordPress插件和主题的时候,经常需要用到 cookie,比如存取用户状态等,我之前一篇关于 DNS 预获取(DNS Prefetching) 点击前往 的文中就用到 cookie 来记录用户是否首次访问网站,以实现在访客入口页面输出 DNS 预取加载提速功能。

但是如果你在 WordPress 主题文件中直接使用 php 的 setcookie()来发送 cookie,那是完全不行的。setcookie()文档中有一条内容:必须在任何其他输出发送前对 cookie 进行赋值,我怀疑 WordPress 初始化的时候已经发送了其他输出,才导致 setcookie 失效。于是深入搜索了 Google,从一篇老外的文章中获得了以下方法:

设置 cookie 及调用

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');
// 上面一行<a href="http://www.seaomc.com/archives/tag/dm" title="查看更多关于代码的文章" target="_blank">代码</a>也可以改成下面一行<a href="http://www.seaomc.com/archives/tag/dm" title="查看更多关于代码的文章" target="_blank">代码</a>
// add_action('after_setup_theme', 'set_newuser_cookie');

2、然后在需要调用 cookie 值的地方读取 cookie

f (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插件和主题开发。

参考文章:

http://wptheming.com/2011/04/set-a-cookie-in-wordpress/
http://beamnote.com/2011/time-of-wordpress.html


版权声明:本站所有文章和资源使用BY-NC-SA协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->WordPress 中设置cookie及调用方法解释!在下边可以分享本文哦!
本文最后更新于2018年3月14日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址