Plugin Updates
This commit is contained in:
@@ -87,6 +87,14 @@ class WP_REST_Server {
|
||||
*/
|
||||
protected $embed_cache = array();
|
||||
|
||||
/**
|
||||
* Stores request objects that are currently being handled.
|
||||
*
|
||||
* @since 6.5.0
|
||||
* @var array
|
||||
*/
|
||||
protected $dispatching_requests = array();
|
||||
|
||||
/**
|
||||
* Instantiates the REST server.
|
||||
*
|
||||
@@ -467,18 +475,20 @@ class WP_REST_Server {
|
||||
$this->set_status( $code );
|
||||
|
||||
/**
|
||||
* Filters whether to send nocache headers on a REST API request.
|
||||
* Filters whether to send no-cache headers on a REST API request.
|
||||
*
|
||||
* @since 4.4.0
|
||||
* @since 6.3.2 Moved the block to catch the filter added on rest_cookie_check_errors() from rest-api.php
|
||||
* @since 6.3.2 Moved the block to catch the filter added on rest_cookie_check_errors() from wp-includes/rest-api.php.
|
||||
*
|
||||
* @param bool $rest_send_nocache_headers Whether to send no-cache headers.
|
||||
*/
|
||||
$send_no_cache_headers = apply_filters( 'rest_send_nocache_headers', is_user_logged_in() );
|
||||
|
||||
// send no cache headers if the $send_no_cache_headers is true
|
||||
// OR if the HTTP_X_HTTP_METHOD_OVERRIDE is used but resulted a 4x response code.
|
||||
if ( $send_no_cache_headers || ( true === $method_overridden && strpos( $code, '4' ) === 0 ) ) {
|
||||
/*
|
||||
* Send no-cache headers if $send_no_cache_headers is true,
|
||||
* OR if the HTTP_X_HTTP_METHOD_OVERRIDE is used but resulted a 4xx response code.
|
||||
*/
|
||||
if ( $send_no_cache_headers || ( true === $method_overridden && str_starts_with( $code, '4' ) ) ) {
|
||||
foreach ( wp_get_nocache_headers() as $header => $header_value ) {
|
||||
if ( empty( $header_value ) ) {
|
||||
$this->remove_header( $header );
|
||||
@@ -738,6 +748,13 @@ class WP_REST_Server {
|
||||
$request['context'] = 'embed';
|
||||
}
|
||||
|
||||
if ( empty( $request['per_page'] ) ) {
|
||||
$matched = $this->match_request_to_handler( $request );
|
||||
if ( ! is_wp_error( $matched ) && isset( $matched[1]['args']['per_page']['maximum'] ) ) {
|
||||
$request['per_page'] = (int) $matched[1]['args']['per_page']['maximum'];
|
||||
}
|
||||
}
|
||||
|
||||
$response = $this->dispatch( $request );
|
||||
|
||||
/** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */
|
||||
@@ -981,6 +998,8 @@ class WP_REST_Server {
|
||||
* @return WP_REST_Response Response returned by the callback.
|
||||
*/
|
||||
public function dispatch( $request ) {
|
||||
$this->dispatching_requests[] = $request;
|
||||
|
||||
/**
|
||||
* Filters the pre-calculated result of a REST API dispatch request.
|
||||
*
|
||||
@@ -1006,6 +1025,7 @@ class WP_REST_Server {
|
||||
$result = $this->error_to_response( $result );
|
||||
}
|
||||
|
||||
array_pop( $this->dispatching_requests );
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -1013,7 +1033,9 @@ class WP_REST_Server {
|
||||
$matched = $this->match_request_to_handler( $request );
|
||||
|
||||
if ( is_wp_error( $matched ) ) {
|
||||
return $this->error_to_response( $matched );
|
||||
$response = $this->error_to_response( $matched );
|
||||
array_pop( $this->dispatching_requests );
|
||||
return $response;
|
||||
}
|
||||
|
||||
list( $route, $handler ) = $matched;
|
||||
@@ -1038,7 +1060,22 @@ class WP_REST_Server {
|
||||
}
|
||||
}
|
||||
|
||||
return $this->respond_to_request( $request, $route, $handler, $error );
|
||||
$response = $this->respond_to_request( $request, $route, $handler, $error );
|
||||
array_pop( $this->dispatching_requests );
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the REST server is currently dispatching / responding to a request.
|
||||
*
|
||||
* This may be a standalone REST API request, or an internal request dispatched from within a regular page load.
|
||||
*
|
||||
* @since 6.5.0
|
||||
*
|
||||
* @return bool Whether the REST server is currently handling a request.
|
||||
*/
|
||||
public function is_dispatching() {
|
||||
return (bool) $this->dispatching_requests;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user