WordPress 时区设置问题:发布文章后,立即发布的文章状态变成了定时发布

    最近奇点新搭建了一个Wordpress博客站,发布文章后,原本应该为立即发布的文章,状态变成了定时发布,时间比当前时间晚8个小时,计划发布也存在此问题。

    WordPress 时区设置问题:发布文章后,立即发布的文章状态变成了定时发布文章源自奇点世界-https://www.xerer.com/archives/35950.html

    上图是计划2022-7-23:00 发布的,但预定发布时间显示为:2022-07-22 16:00,晚了8个小时。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    Mysql数据库wp_posts表,对应帖子的post_date_gmt是正确的,pos_date晚了8小时。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    在安装时候,特意注意了时区问题,几个地方与时区相关的地方都设置为Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    1、CentOS操作系统时区设置为Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    timedatectl set-timezone Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    执行这步后,系统local time 和时区显示为CST。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    硬件时钟与操作系统时钟同步 hwclock –systohc文章源自奇点世界-https://www.xerer.com/archives/35950.html

    2、php.ini的时区设置为Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    date.timezone= Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    3、Wordpress的时区设置为Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    管理后台->设置(wp-admin/options-general.php )中时区设置为上海文章源自奇点世界-https://www.xerer.com/archives/35950.html

    wp-settings.php文章源自奇点世界-https://www.xerer.com/archives/35950.html

    date_default_timezone_set( ‘Asia/Shanghai’ );文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    另外数据库时区也使用Asia/Shanghai文章源自奇点世界-https://www.xerer.com/archives/35950.html

    mysql.cnf文章源自奇点世界-https://www.xerer.com/archives/35950.html

    default-time-zone = ‘+8:00’文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    搜索了一下网上的各种解决方案,都不靠谱,研究代码后,可行的解决方案。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    方案1:统一采用UTC

    1、CentOS操作系统时区设置为UTC文章源自奇点世界-https://www.xerer.com/archives/35950.html

    timedatectl set-timezone UTC文章源自奇点世界-https://www.xerer.com/archives/35950.html

    ln -sf /usr/share/zoneinfo/UTC /etc/localtime文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    time 和date可以设置成北京时间,缺点是ntpdate自动同步会被同步成UTC+0时间,需要禁用ntpdate,这对日常运维不方便。文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    2、php.ini的时区设置为UTC文章源自奇点世界-https://www.xerer.com/archives/35950.html

    date.timezone= UTC文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    3、Wordpress的时区设置为UTC文章源自奇点世界-https://www.xerer.com/archives/35950.html

    管理后台->设置(wp-admin/options-general.php )中时区设置为UTC+0文章源自奇点世界-https://www.xerer.com/archives/35950.html

    wp-settings.php文章源自奇点世界-https://www.xerer.com/archives/35950.html

    date_default_timezone_set( ‘UTC’ );文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

     文章源自奇点世界-https://www.xerer.com/archives/35950.html

    方案2:依然采用UTC+8时区(Asia/Shanghai),采用wp_date替换date_i18n

    由于操作系统、php、Wordpres都使用UTC+0时区,使用上总有点别扭,且有些应用需要系统及相关运行环境时区采用UTC+8。此种情况下,推荐采用wp_date替换date_i18n。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    文章源自奇点世界-https://www.xerer.com/archives/35950.html

    从Wordpress 5.3+起,官方推荐使用wp_date替代原来的date_i18n函数。相对于date_i18n,wp_date最大的优势是可以接受Unix timestamp,具体可以参考 date_i18n() 下面的讨论:文章源自奇点世界-https://www.xerer.com/archives/35950.html

    https://developer.wordpress.org/reference/functions/date_i18n/文章源自奇点世界-https://www.xerer.com/archives/35950.html

    导致发文章后,时间戳相对于当前时区晚8小时的代码文件是 wp-admin/includes/meta-boxes.php文章源自奇点世界-https://www.xerer.com/archives/35950.html

    批量替换wp-admin/includes/meta-boxes.php中的date_i18n为wp_date。文章源自奇点世界-https://www.xerer.com/archives/35950.html

    文章源自奇点世界-https://www.xerer.com/archives/35950.html

    发表评论

    匿名网友