记录一下WordPress评论时间显示为8小时前的解决方法

最近发现我的小破站出现了8 小时 BUG!!!

一看还真的是这样,快了 8 个小时,什么鬼啊?前端时间还是正常的啊!!

WordPress 的默认时区是 UTC 格林威治时间,我后台常规设置中选的就是上海时区,但是就算是将 WordPress 时区调整为上海或 UTC+8 后,前台评论时间显示均还是 UTC 时间,与北京时间仍有 8 小时的时差,而后台评论的时间是正确的,也就是说后台的时区设置对前台评论不起作用

在此之前,先使用 date 命令看下服务器时间是否正确

记录一下WordPress评论时间显示为8小时前的解决方法-幂构社区

如果正确,按照下面的方法走

方法一

修改 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 );

修改为:

/*
解决评论时区错误问题
*/
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 核心程序的,可能下次升级以后就又出现问题

给TA买糖
共{{data.count}}人
人已赞赏
⚠️
幂构社区上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
本文地址:https://www.teelm.com/2021/10/09/23851.html
无意侵害您的权益,请发送邮件至 或点击右侧 私信:权戈 反馈,我们将尽快处理。
WP教程

用一为热榜 API 服务把各种实时热榜集合到B2主题里

2021-10-7 19:56:24

WP教程

给WordPress古腾堡(Gutenberg)添加自定义块

2021-10-22 3:33:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
  • 809 用户总数
  • 1278 文章总数
  • 1661428 浏览总数
  • 0 今日发布
  • 1568 稳定运行
立即加入

加入幂构社区VIP,快速免费获取优质资源!

QQ在线咨询