如何解决WordPress时区错误问题
WordPress的默认时区是UTC格林威治时间。如果要变更时区,你可以在后台的常规设置中选择自己的时区。这里以北京时间为例,我们可以选择设置时区为上海。但是在将WordPress时区调整为上海或UTC+8后,前台主题时间显示均还是UTC时间,与北京时间仍有8小时的时差,而后台文章发布时间是正确的。也就是说后台的时区设置对前台主题不起效果。我也查找试过很多网上说的方法,均不起作用。以下是刚开始使用且无效的方法,可能你找到的方法也都是这些:
方法一、修改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');
以上三种方法按顺序我均试过无效,最后我想到了问题的根源可能是timestamp函数有时差没解决所造成的,于是立即打开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 );
修改为:
/* 解决主题时区错误问题 代码来源: www.wpzxbj.com */ 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核心程序的,今后升级有所不便,你需要做好修改记录。