rest_do_request()WP 4.4.0

Performs an internal request to a REST API route through WP_REST_Server{}.

The request runs inside the current PHP process without an HTTP request to the site. The server finds the route, validates and sanitizes parameters, calls permission_callback, and then runs the route callback.

REST API errors are also represented by a WP_REST_Response object. Check them with is_error().

See also “How to make internal REST requests”: https://wp-kama.ru/handbook/rest/usage/internal-requests

No Hooks.

Returns

WP_REST_Response.

  • WP_REST_Response - the REST API response, which may contain a successful result or an error.

Usage

rest_do_request( $request );
$request(WP_REST_Request|string) (required)

A request object or REST route, for example /wp/v2/posts.

If a string is passed, it is used as a GET route. Create a WP_REST_Request{} for another HTTP method, parameters, or headers.

Examples

0

#1 Performing an Internal REST Request

We will get the five latest posts via WordPress’s standard REST route.

$request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
$request->set_param( 'per_page', 5 );

$response = rest_do_request( $request );

if ( $response->is_error() ) {
	$error = $response->as_error();

	wp_die( esc_html( $error->get_error_message() ) );
}

$posts = $response->get_data();

Changelog

Since 4.4.0 Introduced.

rest_do_request() code WP 7.0.4

function rest_do_request( $request ) {
	$request = rest_ensure_request( $request );
	return rest_get_server()->dispatch( $request );
}