
解决wordpress主题发布文章时时间显示为8小时前的3种办法
我刚发了一篇文章,瞥了一眼。时间是8小时前。我勒个去?我穿越了吗?好的,我想回到过去,但我可以考虑一下。我必须再次开始折腾,各种百度,各种检查,找到几种方法来解决此时不正确的问题。
方法一:修改 WordPress 源文件
在 wp-includes\functions.php 文件里查找下面代码
function current_time( $type, $gmt = 0 ) {switch ( $type ) {case ‘mysql’:return ( $gmt ) ? gmdate( ‘Y-m-d H:i:s’ ) : gmdate( ‘Y-m-d H:i:s’, ( time() + ( get_option( ‘gmt_offset’ ) * 3600 ) ) );break;case ‘timestamp’:return ( $gmt ) ? time() : time() + ( get_option( ‘gmt_offset’ ) * 3600 );break;}}
替换成如下代码即可:
function current_time( $type, $gmt = 8 ) {switch ( $type ) {case ‘mysql’:return ( $gmt ) ? gmdate( ‘Y-m-d H:i:s’ ) : gmdate( ‘Y-m-d H:i:s’, ( time() + ( get_option( ‘gmt_offset’ ) * 3600 ) ) );break;case ‘timestamp’:return ( $gmt ) ? time() : time() + ( get_option( ‘gmt_offset’ ) * 3600 );break;}}
这样修改好后,在博客前台文章发表时间就是其实的本地化时间了。
方法二:WordPress 后台设置 UTC+8
按照以下步骤操作
1、php.ini
先保证你的搭建的 PHP 环境 php.ini 时间为东八区:date.timezone=Asia/Shanghai
2.WordPress 后台设置 UTC+8
仪表盘 – 设置 -常规,时区设置为 UTC+8,如下图:
3、主题中设置时间
在你的主题文件functions.php
中的第一个<?php
字符换行插入date_default_timezone_set(PRC);
以上两种方法,我测试无效,至少,针对我的主机和主题。
方法三:工单给阿里云的工程师
着急,无奈,直接在 QQ 群里发文,得到的答案无非就是服务器时间不准,或者后台时区设置错误。
我表示,我看过服务器时间,没有问题,死马当活马医,工单给阿里云的工程师。
建议使用 date 命令看下服务器时间是否正常,同步内网和公共 NTP 时间服务器请参考: https://help.aliyun.com/knowledge_detail/40583.html
好吧,服务器时间没有问题,那问题一定出在网站程序本身或者主题上。经过排查,我终于找到解决办法,欣喜若狂,不废话直接上代码。
1、在wp-config.php
和wp-settings.php
中都添加如下代码:
- date_default_timezone_set( 'Asia/Shanghai' );
- ini_set('date.timezone','Asia/Shanghai');
2、找到知更鸟主题路径下的 default.php,即:begin/inc/function/default.php(大概 566 行和 575 行之间),将原来的代码:
- echo human_time_diff(get_the_time('U'), current_time('timestamp')).'前';
修改成:
- echo human_time_diff(get_the_time('U'), current_time('timestamp') - 28800).'前';
然后,我的 wordpress 前端显示时间终于恢复正常。
针对上面的几种方式,遇到我同样问题的站长朋友们可以试试,万一有效呢?但是要记住的是,修改文件之前,文件要保存备份一下哟!
常见问题FAQ
- 1.关于新手解压出错 必看(附电脑+安卓WINRAR APP)
- 新手必看 本站资源解压教程:http://www.52cgzys.com/76304/
- 2.本站Telegram群组链接
- 3.所有礼包码下载地址:http://www.52cgzys.com/422289/
- 4.各类问题及解决处理方法合集