From 8bbe6a0d506949e98856a0c32c4cfc62ba9633d2 Mon Sep 17 00:00:00 2001 From: James Nylen Date: Tue, 7 Mar 2017 05:47:32 +0000 Subject: [PATCH] REST API: Add `gmt_offset` and `timezone_string` to the base `/wp-json` response. The site's current timezone offset is an important piece of information for any REST API client that needs to manipulate dates. It has not been previously available. Expose both the `gmt_offset` (the site's current offset from UTC in hours) and `timezone_string` (which also provides information about daylight savings time) via the "site info" endpoint (the base `/wp-json` response). Also update the `wp-api-generated.js` fixture file with the changes to the default API responses. Props sagarkbhatt. Fixes #39854. git-svn-id: https://develop.svn.wordpress.org/trunk@40238 602fd350-edb4-49c9-b593-d223f7449a82 --- .../rest-api/class-wp-rest-server.php | 16 +++++++++------- tests/phpunit/tests/rest-api/rest-server.php | 2 ++ tests/qunit/fixtures/wp-api-generated.js | 2 ++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php index 4f5ae7650d..9d4a5fec05 100644 --- a/src/wp-includes/rest-api/class-wp-rest-server.php +++ b/src/wp-includes/rest-api/class-wp-rest-server.php @@ -1012,13 +1012,15 @@ class WP_REST_Server { public function get_index( $request ) { // General site data. $available = array( - 'name' => get_option( 'blogname' ), - 'description' => get_option( 'blogdescription' ), - 'url' => get_option( 'siteurl' ), - 'home' => home_url(), - 'namespaces' => array_keys( $this->namespaces ), - 'authentication' => array(), - 'routes' => $this->get_data_for_routes( $this->get_routes(), $request['context'] ), + 'name' => get_option( 'blogname' ), + 'description' => get_option( 'blogdescription' ), + 'url' => get_option( 'siteurl' ), + 'home' => home_url(), + 'gmt_offset' => get_option( 'gmt_offset' ), + 'timezone_string' => get_option( 'timezone_string' ), + 'namespaces' => array_keys( $this->namespaces ), + 'authentication' => array(), + 'routes' => $this->get_data_for_routes( $this->get_routes(), $request['context'] ), ); $response = new WP_REST_Response( $available ); diff --git a/tests/phpunit/tests/rest-api/rest-server.php b/tests/phpunit/tests/rest-api/rest-server.php index cda4a4f4cc..046d2b5f62 100644 --- a/tests/phpunit/tests/rest-api/rest-server.php +++ b/tests/phpunit/tests/rest-api/rest-server.php @@ -646,6 +646,8 @@ class Tests_REST_Server extends WP_Test_REST_TestCase { $this->assertArrayHasKey( 'description', $data ); $this->assertArrayHasKey( 'url', $data ); $this->assertArrayHasKey( 'home', $data ); + $this->assertArrayHasKey( 'gmt_offset', $data ); + $this->assertArrayHasKey( 'timezone_string', $data ); $this->assertArrayHasKey( 'namespaces', $data ); $this->assertArrayHasKey( 'authentication', $data ); $this->assertArrayHasKey( 'routes', $data ); diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js index 23a2fb918b..b4c6109baf 100644 --- a/tests/qunit/fixtures/wp-api-generated.js +++ b/tests/qunit/fixtures/wp-api-generated.js @@ -10,6 +10,8 @@ mockedApiResponse.Schema = { "description": "Just another WordPress site", "url": "http://example.org", "home": "http://example.org", + "gmt_offset": "0", + "timezone_string": "", "namespaces": [ "oembed/1.0", "wp/v2"