上一篇我们 WordPress 添加了让时间显示为多久以前的功能,没有看过的可以去复习下。
然后有的小伙伴会遇到一个 WordPress 的奇葩问题,就是显示发布时间为8小时前。
这个问题非常诡异,没遇到过的可能这辈子都不会遇到,遇上的折腾来折腾去也不一定能搞定,索性发个教程出来,希望能帮助到后面遇到这个问题的人。
按照以下步骤操作
1、php.ini
先保证你的搭建的PHP环境php.ini时间为东八区:date.timezone=Asia/Shanghai
2、WordPress后台设置UTC+8
仪表盘 – 设置 – 常规,时区设置为 上海。
3、主题中设置时间
在你的主题文件functions.php中的第一个<?php字符换行插入date_default_timezone_set(PRC);
如果能通过上面的办法能解决,那是最好的,恰好我通过上面的办法依然无法解决。
这个问题很多人发过教程,并且大部分都说明了是因为插件导致的时间错乱,所以如果知道是什么插件导致的,直接禁用插件即可解决,但是由于我这问题莫名其妙的出现,所以献上最终解决办法:
把下面的代码添加到当前主题的 function 文件中即可:
if(!function_exists('cwp_set_current_timezone')){ function cwp_set_current_timezone($timezone){ if( false===stripos( $timezone,':' ) ){ $timezone_name = $timezone; }else{ $timezone = strtolower($timezone); $timezone = str_replace(array('utc','UTC'), '', $timezone) ; $timezone = preg_replace('/[^0-9]/', '', $timezone) * 36; $timezone_name = timezone_name_from_aBBR(null, $timezone, true); if( false===$timezone_name ){ $timezone_name = timezone_name_from_abbr(null, -10* 3600, false); } } if(function_exists('date_default_timezone_set')){ date_default_timezone_set($timezone_name); return $timezone_name; } return false; } } if(function_exists('date_default_timezone_set')){ $timezone = '+0:00'; cwp_set_current_timezone( $timezone ); }
暂无评论