
编写WordPressc软件和主题时经常使用Cookies。但是如果你用php的setcookie()立即发送WordPress主题文档中的cookie,那时候就彻底坏了。我怀疑WordPress重置时已经发送了其他输出,这会使setcookie无效。
撰写WordPress软件和主题的情况下,常常必须采用cookie,例如存储客户情况等,我以前撰写的软件LudouSimpleVote就用cookie来纪录客户网络投票時间,以完成简易的避免反复网络投票作用。可是假如你在WordPress主题文档中立即应用php的setcookie()来发送cookie,那时彻底不好的。setcookie()文本文档中有一条內容:务必在一切别的輸出发送前对cookie开展取值,我怀疑WordPress复位的情况下早已发送了别的輸出,才造成setcookie无效。因此深层次检索了Google,从一篇外国人的文章内容中得到了下列方式:
1、在主题文档functions.php中加上下列编码,以设定cookie:
复制代码编码以下:
/**
*涵数名字,setcookie的有关主要参数等能够自主改动
*/
functionset_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'Welcomeback!';
}
else{
echo'Hellonewvisitor!';
}
常见问题:
1、在WordPress中,一切PHP时间函数,比如time()回到的時间有误,这种时间函数回到的全是UTC0时区的時间,假如你要得到你在WordPress后台管理–设定–基本中设定的时区时间,能够应用下列好多个WordPress的时间函数:
复制代码编码以下:
date_i18n('Y-m-dh: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软件和主题开发设计。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)