Getting wp_timezone undefined within a namespace

My workaround at the moment, within a shortcode, is to just copy the WP native code to get the Timezone within my (namespaced) class:

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;
}

But I’m wondering why I can’t just call make a call to wp_timezone() (escaped for namespace).

Is it because the file that contains that class hasn’t loaded yet?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Thank you Tom J Nowell for the insightful comment above.

Turns out that wp_timezone is a relatively recent addition to WordPress, and didn’t exist in the version of WP I was developing in. It was added, as the Changelog says, in v5.3. I was using v5.2.

The function itself:

function wp_timezone() {
    return new DateTimeZone( wp_timezone_string() );
}

Simpy wraps the result of wp_timezone_string in a native php DateTimeZone object. The wp_timezone_string was also added in v5.3.

Since this is a brand new plugin, I’m not going to support older version of WordPress. For pragmatic reasons, and in solidarity with the movement to encourage users to upgrade WP environments, I have also opted to not support versions of php (like v5.6) that are past their End of Life.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x