Changeset 43986
- Timestamp:
- 12/12/2018 08:50:22 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/5.0 merged: 43736
- Property svn:mergeinfo changed
-
trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-controller.php
r43571 r43986 386 386 $additional_fields = $this->get_additional_fields(); 387 387 388 $requested_fields = $this->get_fields_for_response( $request ); 389 388 390 foreach ( $additional_fields as $field_name => $field_options ) { 389 391 390 392 if ( ! $field_options['get_callback'] ) { 393 continue; 394 } 395 396 if ( ! in_array( $field_name, $requested_fields, true ) ) { 391 397 continue; 392 398 } -
trunk/tests/phpunit/tests/rest-api/rest-controller.php
r43571 r43986 232 232 ); 233 233 } 234 235 public function test_add_additional_fields_to_object_respects_fields_param() { 236 $controller = new WP_REST_Test_Controller(); 237 $request = new WP_REST_Request( 'GET', '/wp/v2/testroute' ); 238 $schema = $controller->get_item_schema(); 239 $field = 'somefield'; 240 241 $listener = new MockAction(); 242 $method = 'action'; 243 244 register_rest_field( 245 $schema['title'], 246 $field, 247 array( 248 'get_callback' => array( $listener, $method ), 249 'schema' => array( 250 'type' => 'string', 251 ), 252 ) 253 ); 254 255 $item = array(); 256 257 $controller->prepare_item_for_response( $item, $request ); 258 259 $first_call_count = $listener->get_call_count( $method ); 260 261 $this->assertTrue( $first_call_count > 0 ); 262 263 $request->set_param( '_fields', 'somestring' ); 264 265 $controller->prepare_item_for_response( $item, $request ); 266 267 $this->assertSame( $first_call_count, $listener->get_call_count( $method ) ); 268 269 $request->set_param( '_fields', $field ); 270 271 $controller->prepare_item_for_response( $item, $request ); 272 273 $this->assertTrue( $listener->get_call_count( $method ) > $first_call_count ); 274 } 234 275 } -
trunk/tests/phpunit/tests/rest-api/rest-test-controller.php
r42343 r43986 11 11 */ 12 12 class WP_REST_Test_Controller extends WP_REST_Controller { 13 /** 14 * Prepares the item for the REST response. 15 * 16 * @param mixed $item WordPress representation of the item. 17 * @param WP_REST_Request $request Request object. 18 * @return WP_Error|WP_REST_Response Response object on success, or WP_Error object on failure. 19 */ 20 public function prepare_item_for_response( $item, $request ) { 21 $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; 22 $item = $this->add_additional_fields_to_object( $item, $request ); 23 $item = $this->filter_response_by_context( $item, $context ); 24 $response = rest_ensure_response( $item ); 25 return $response; 26 } 13 27 14 28 /** 15 * Get the Post type's schema, conforming to JSON Schema29 * Get the item's schema, conforming to JSON Schema. 16 30 * 17 31 * @return array … … 73 87 ); 74 88 75 return $ schema;89 return $this->add_additional_fields_schema( $schema ); 76 90 } 77 91
Note: See TracChangeset
for help on using the changeset viewer.