Make WordPress Core

Changeset 62772


Ignore:
Timestamp:
07/17/2026 04:27:15 PM (2 months ago)
Author:
desrosj
Message:

REST API: sub-requests must always use dispatch.

Merges [62769] to the 7.0 branch.

Props xknown, johnbillion, joehoyle, jorbin, sergeybiryukov, ehtis, desrosj.

Location:
branches/7.0
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/7.0

  • branches/7.0/src/wp-includes/rest-api.php

    r62338 r62772  
    443443        }
    444444
     445        // Short-circuit before define()/die() if a REST dispatch is already in flight.
     446        // serve_request() enforces this too; guarding here avoids the trailing die().
     447        if ( isset( $GLOBALS['wp_rest_server'] )
     448                && $GLOBALS['wp_rest_server'] instanceof WP_REST_Server
     449                && $GLOBALS['wp_rest_server']->is_dispatching()
     450        ) {
     451                return;
     452        }
     453
    445454        // Return an error message if query_var is not a string.
    446455        if ( ! is_string( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
  • branches/7.0/src/wp-includes/rest-api/class-wp-rest-server.php

    r62081 r62772  
    284284         */
    285285        public function serve_request( $path = null ) {
     286                // Refuse to start a fresh top-level REST cycle while another dispatch
     287                // is already in flight. Internal sub-requests must use dispatch().
     288                if ( $this->is_dispatching() ) {
     289                        return false;
     290                }
     291
    286292                /* @var WP_User|null $current_user */
    287293                global $current_user;
Note: See TracChangeset for help on using the changeset viewer.