From b979a993551cb83daf1814eaa209b304f42963f9 Mon Sep 17 00:00:00 2001 From: "K. Adam White" Date: Thu, 12 Sep 2019 21:46:41 +0000 Subject: [PATCH] REST API: Accept string path in rest_ensure_request. Update `rest_ensure_request()` to accept a string path, permitting a string path to be passed to `rest_do_request()` as is indicated (previously inaccurately) in that method's PHPDoc. Props TimothyBlynJacobs, kadamwhite. Fixes #40614. git-svn-id: https://develop.svn.wordpress.org/trunk@46099 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/rest-api.php | 7 ++++++- tests/phpunit/tests/rest-api.php | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php index 1e4e23617b..89c4e6bb3a 100644 --- a/src/wp-includes/rest-api.php +++ b/src/wp-includes/rest-api.php @@ -482,8 +482,9 @@ function rest_get_server() { * Ensures request arguments are a request object (for consistency). * * @since 4.4.0 + * @since 5.3.0 Accept string argument for the request path. * - * @param array|WP_REST_Request $request Request to check. + * @param array|string|WP_REST_Request $request Request to check. * @return WP_REST_Request REST request instance. */ function rest_ensure_request( $request ) { @@ -491,6 +492,10 @@ function rest_ensure_request( $request ) { return $request; } + if ( is_string( $request ) ) { + return new WP_REST_Request( 'GET', $request ); + } + return new WP_REST_Request( 'GET', '', $request ); } diff --git a/tests/phpunit/tests/rest-api.php b/tests/phpunit/tests/rest-api.php index 237fd71ee4..c81efd67b6 100644 --- a/tests/phpunit/tests/rest-api.php +++ b/tests/phpunit/tests/rest-api.php @@ -744,4 +744,14 @@ class Tests_REST_API extends WP_UnitTestCase { $GLOBALS['wp_rest_server'] = $rest_server; } + + /** + * @ticket 40614 + */ + function test_rest_ensure_response_accepts_path_string() { + $request = rest_ensure_request( '/wp/v2/posts' ); + $this->assertInstanceOf( 'WP_REST_Request', $request ); + $this->assertEquals( '/wp/v2/posts', $request->get_route() ); + $this->assertEquals( 'GET', $request->get_method() ); + } }