wp_is_serving_rest_request() │ WP 6.5.0

Checks whether WordPress is serving a REST API request.

The function checks the REST_REQUEST constant. It does not detect internal REST requests performed while processing a regular page, such as requests that preload data.

The function depends on the global 'REST_REQUEST' variable.

The function only works on the parse_request action or later. Before then, the REST_REQUEST constant has not yet been defined.

Use wp_is_rest_endpoint() to also detect an internal REST API request.

No Hooks.

Returns

bool.

  • true - WordPress is serving a separate REST API request.
  • false - the current request is not a separate REST API request.

Usage

wp_is_serving_rest_request();

Examples

#1 Run code only outside the REST API

After the request type is determined, the custom kama_regular_request action fires. For a separate REST API request, the action does not fire.

add_action( 'parse_request', 'kama_handle_regular_request', 10, 0 );

function kama_handle_regular_request() {
	if ( wp_is_serving_rest_request() ) {
		return;
	}

	do_action( 'kama_regular_request' );
}

#2 Keep the REST API available during maintenance

Regular requests receive a 503 error, while REST API requests continue to work.

add_action( 'parse_request', 'kama_enable_maintenance_mode', 10, 0 );

function kama_enable_maintenance_mode() {
	if ( wp_is_serving_rest_request() || current_user_can( 'manage_options' ) ) {
		return;
	}

	wp_die(
		'The site is temporarily unavailable.',
		'Maintenance',
		[ 'response' => 503 ]
	);
}

Changelog

Since 6.5.0 Introduced.

wp_is_serving_rest_request() code WP 7.1.2

function wp_is_serving_rest_request() {
	return defined( 'REST_REQUEST' ) && REST_REQUEST;
}