wp_is_serving_rest_request()
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() wp is serving rest request code WP 7.1.2
function wp_is_serving_rest_request() {
return defined( 'REST_REQUEST' ) && REST_REQUEST;
}