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 );
修改為:
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核心程式的,今後升級有所不便,你需要做好修改記錄。