在命名空间中未定义wp_timezone

时间:2020-09-23 作者:MikeiLL

目前,我的解决方法是在一个短代码中复制WP本机代码,以在我的(命名空间)类中获取时区:

new \\DateTimeZone( $this->wp_timezone_string() ));
private function wp_timezone_string() {
    $timezone_string = get_option( \'timezone_string\' );

    if ( $timezone_string ) {
        return $timezone_string;
    }

    $offset  = (float) get_option( \'gmt_offset\' );
    $hours   = (int) $offset;
    $minutes = ( $offset - $hours );

    $sign      = ( $offset < 0 ) ? \'-\' : \'+\';
    $abs_hour  = abs( $hours );
    $abs_mins  = abs( $minutes * 60 );
    $tz_offset = sprintf( \'%s%02d:%02d\', $sign, $abs_hour, $abs_mins );

    return $tz_offset;
}
但我想知道为什么我不能打电话给\\wp_timezone() (为命名空间转义)。

是否因为包含该类的文件尚未加载?

1 个回复
最合适的回答,由SO网友:MikeiLL 整理而成

非常感谢。Tom J Nowell 对于上述有见地的评论。

结果是wp_timezone 是Wordpress的最新添加,在我开发的WP版本中不存在。正如变更日志所说,它是在v5.3. 我在使用v5.2.

功能本身:

function wp_timezone() {
    return new DateTimeZone( wp_timezone_string() );
}
Simpy包装的结果wp_timezone_string 在本机php中DateTimeZone 对象这个wp_timezone_string 中也添加了v5.3.

由于这是一个全新的插件,我不打算支持旧版本的Wordpress。出于实用的原因,为了支持鼓励用户升级WP环境的运动,我也选择不支持php版本(如v5.6) 已经过了生命的尽头。

相关推荐

Date, Time, and Timezones

我对在WordPress中使用日期/时间和时区有点困惑。我有以下问题:“管理->设置”部分中时区设置的目的是什么?假设当前格林尼治时间是20:00,假设我在东部时间(东部时间是16:00),那么博客的时间是如何节省的?假设一位读者正在阅读帖子,而他/她位于土耳其。所以他们的当地时间是23:00,他们认为23:00是发布时间吗?假设我使用的是自定义帖子类型,并且我有一个额外的日期/时间字段用于其他日期信息。如何确保自定义日期字段的行为与WordPress字段相同?对于这些基本问题,我深表歉意,但我真的