WordPress技巧

解決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 );

修改為:

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

Recent Posts

Flexible Shipping Pro

在WordPress的世界裡,…

5天 ago

2023 年 WordPress 中最棒的多語言翻譯外掛推薦

擔心如何翻譯您的網站語言以支持…

1年 ago

2023 年 WordPress 中最棒的可視化頁面構建器外掛推薦

在設計任何頁面或網站時,對於不…

1年 ago

Ella 多用途 Shopify 佈景主題

Shopify 佈景主題市場上有許…

1年 ago

AI Engine Pro

喵容今天帶來的 AI Engi…

1年 ago

AIKit

喵容今天為您帶來 AIKit …

1年 ago