Changeset 36529
- Timestamp:
- 02/16/2016 01:11:31 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api.php
r36086 r36529 141 141 define( 'REST_REQUEST', true ); 142 142 143 /** @var WP_REST_Server $wp_rest_server */ 144 global $wp_rest_server; 145 146 /** 147 * Filter the REST Server Class. 148 * 149 * This filter allows you to adjust the server class used by the API, using a 150 * different class to handle requests. 151 * 152 * @since 4.4.0 153 * 154 * @param string $class_name The name of the server class. Default 'WP_REST_Server'. 155 */ 156 $wp_rest_server_class = apply_filters( 'wp_rest_server_class', 'WP_REST_Server' ); 157 $wp_rest_server = new $wp_rest_server_class; 158 159 /** 160 * Fires when preparing to serve an API request. 161 * 162 * Endpoint objects should be created and register their hooks on this action rather 163 * than another action to ensure they're only loaded when needed. 164 * 165 * @since 4.4.0 166 * 167 * @param WP_REST_Server $wp_rest_server Server object. 168 */ 169 do_action( 'rest_api_init', $wp_rest_server ); 143 // Initialize the server. 144 $server = rest_get_server(); 170 145 171 146 // Fire off the request. 172 $ wp_rest_server->serve_request( $GLOBALS['wp']->query_vars['rest_route'] );147 $server->serve_request( $GLOBALS['wp']->query_vars['rest_route'] ); 173 148 174 149 // We're done. … … 274 249 */ 275 250 function rest_do_request( $request ) { 251 $request = rest_ensure_request( $request ); 252 return rest_get_server()->dispatch( $request ); 253 } 254 255 /** 256 * Get the current REST server instance. 257 * 258 * Instantiates a new instance if none exists already. 259 * 260 * @since 4.5.0 261 * 262 * @global WP_REST_Server $wp_rest_server REST server instance. 263 * 264 * @return WP_REST_Server REST server instance. 265 */ 266 function rest_get_server() { 267 /* @var WP_REST_Server $wp_rest_server */ 276 268 global $wp_rest_server; 277 $request = rest_ensure_request( $request ); 278 return $wp_rest_server->dispatch( $request ); 269 270 if ( empty( $wp_rest_server ) ) { 271 /** 272 * Filter the REST Server Class. 273 * 274 * This filter allows you to adjust the server class used by the API, using a 275 * different class to handle requests. 276 * 277 * @since 4.4.0 278 * 279 * @param string $class_name The name of the server class. Default 'WP_REST_Server'. 280 */ 281 $wp_rest_server_class = apply_filters( 'wp_rest_server_class', 'WP_REST_Server' ); 282 $wp_rest_server = new $wp_rest_server_class; 283 284 /** 285 * Fires when preparing to serve an API request. 286 * 287 * Endpoint objects should be created and register their hooks on this action rather 288 * than another action to ensure they're only loaded when needed. 289 * 290 * @since 4.4.0 291 * 292 * @param WP_REST_Server $wp_rest_server Server object. 293 */ 294 do_action( 'rest_api_init', $wp_rest_server ); 295 } 296 297 return $wp_rest_server; 279 298 } 280 299 -
trunk/tests/phpunit/tests/rest-api/rest-server.php
r35773 r36529 16 16 /** @var WP_REST_Server $wp_rest_server */ 17 17 global $wp_rest_server; 18 $this->server = $wp_rest_server = new Spy_REST_Server(); 19 20 do_action( 'rest_api_init', $this->server ); 18 19 unset( $wp_rest_server ); 20 add_filter( 'wp_rest_server_class', array( $this, 'filter_wp_rest_server_class' ) ); 21 $this->server = rest_get_server(); 22 remove_filter( 'wp_rest_server_class', array( $this, 'filter_wp_rest_server_class' ) ); 21 23 } 22 24 … … 646 648 } 647 649 } 650 651 public function filter_wp_rest_server_class() { 652 return 'Spy_REST_Server'; 653 } 648 654 }
Note: See TracChangeset
for help on using the changeset viewer.