目前,我的解决方法是在一个短代码中复制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()
(为命名空间转义)。
是否因为包含该类的文件尚未加载?
最合适的回答,由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
) 已经过了生命的尽头。