WordPress时区显示错误和前台不同如何解决

发布时间:

WordPress的默认时区是世界协调时格林威治标准时间。如果要更改时区,可以在后台常规设置中选择自己的时区。这里以北京时间为例,我们可以选择将时区设置为上海。但WordPress时区调整为上海或UTC+8后,前题时间显示仍为UTC时间,与北京时间仍有8小时时差,而后台文章发布时间正确。也就是说背景时区设置对前景主题没有影响。我也在网上搜索尝试了很多方法,但是都没有奏效。

WordPress时区显示错误和前台不同如何解决

以下方法刚开始使用,效果不佳,可能都是你发现的方法:

方法一、修改php.ini,将默认时区改成:

date.timezone = "Asia/Shanghai"

方法二、在 wp-config.php中加入:

date_default_timezone_set('Asia/Shanghai');

方法三、在/wp-includes/functions.php中加入:

date_default_timezone_set('Asia/Shanghai');

以上三种方法我都是按顺序尝试过的,但最后我认为问题的根源可能是时间戳函数的时间差,于是我立即打开了WordPress 4 . 2 . 2/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还需已设置为中国地域内的时区,如果原先没设置成中国时区,可以在php.ini相应位置加入:date.timezone = “Asia/Shanghai”保存并重启apache即可,网站后台也需设置时区为上海或UTC+8。

在使用此方法前,建议先尝试以上所说的方法一、方法二,如果无效就再用我说的方法,此方法毕竟是要修改wordpress核心程序的,今后升级有所不便,你需要做好修改记录。