大早上的心动科技的博主就来搞事情了,评论大早上跑来逛你们网站挖掘学习好东西!然后就在Boke112导航的交流群里艾特我,8小时BUG!!!
我跑来一看还真的是这样,快了8个小时,什么鬼啊?谁搞我服务器了?昨天还是正常的啊,心动大佬你是不是搞我服务器了!!WordPress的默认时区是UTC格林威治时间,我看我后台常规设置中选的就是上海时区,但是就算是将WordPress时区调整为上海或UTC+8后,前台评论时间显示均还是UTC时间,与北京时间仍有8小时的时差,而后台评论的时间是正确的,也就是说后台的时区设置对前台评论不起作用,又开始折腾了,跟群里的大佬们交流,各种检查,找到了几种方法能搞定这个时间不对的问题
在此之前,先用Xshell连接一下服务器,使用date命令看下服务器时间是否正确
date
如果正确,按照下面的方法走
方法一
修改php.ini,将默认时区改成:
date.timezone = "Asia/Shanghai"
我这里时区直接设置的PRC,没什么问题,还改成Asia试了一下,依旧没有解决问题
方法二
在wp-config.php
中加入:
date_default_timezone_set('Asia/Shanghai');
方法三
在/wp-includes/functions.php
中加入:
date_default_timezone_set('Asia/Shanghai');
以上三种方法按顺序我均试过无效,最后我也去问了主题作者,以为是评论时间戳的问题,然后在主题发布页那边找到了一个博主也遇到了这样的问题,去看他博客发布的代码,试了以后还是不行,仔细看了一下他整理的代码,我想到了问题的根源可能是timestamp
函数有时差没解决所造成的,于是打开/wp-includes/functions.php
文件查看,最后我找到了解决WordPress时区错误问题的最终解决方法。以下是时区错误的具体修改方法:
打开/wp-includes/functions.php
文件,找到第65-66行将以下代码:
case 'timestamp':
return ( $gmt ) ? time() : time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
修改为:
/*
解决评论时区错误问题
代码来源: https://qq52o.me/2194.html
*/
case 'timestamp':
//return ( $gmt ) ? time() : time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
return ( $gmt ) ? strtotime(gmdate('Y-m-d H:i:s')) : strtotime(gmdate('Y-m-d H:i:s')) + ( get_option( 'gmt_offset' ) * 3600 );
把之前的代码注释掉,防止出错了你又不知道改的是哪里,保存funtions.php文件后,去前台看看评论中的时间已经正确了,这里还需要注意的是,用以上代码修改后,服务器端php.ini还需已设置为中国地域内的时区,参考方法一。网站后台也需设置时区为上海或UTC+8。在使用此方法前,建议先尝试以上所说的方法一、方法二,如果无效就再用我说的方法,此方法毕竟是要修改WordPress核心程序的,可能下次升级以后就又出现问题,需要做好修改记录
这个功能不错,赞一个
我也发现好几个wp的博客有时间不对的bug
我这用免费虚拟主机的完全看不懂,哇哈哈
@米粒博客 WordPress文件都是一样的
哦哦,就是最近看很多站的评论时间都不对~~·我还以为我机子时间不对,查看之后我机子是没毛病的~~这算是BUG吗
@萧先生、 不清楚 可能是漏洞吧 我也是莫名其妙的
在万能的function.php文件里面添加国内时区最方便。
@夏日博客 好像木有用啊
好像经常有博主遇到这个提前8小时的问题,我记得我站点好像也分享过相关文章,不过感觉不是通用的办法
@boke112导航 我昨天看你那个好像有一部分是针对begin主题的
感谢分享!
使用知更鸟主题的时候出现过这个时间问题!当时也折腾了几个小时
老外的东西果然就是会搞事情。还是自己安心造轮子好
PS。测试下时间~
@西枫里博客 你也来搞事情
如果安装的是英文版,又没有选择时区,那就大半都是提前8小时。中文版就不会了。当然服务器区时问题就另当别论。
@橘子书 我这确实是莫名其妙就变了 🙁
学习了,大佬 😆
测试一下是否修复ok~ 😯
@龙笑天 大佬手下留情 😥
😯 我发誓我没搞,哈哈哈……心疼你三秒
@心动科技 😕 我记住你了