REST API: Respect _fields query arg in preloaded requests

Ensures that preloaded request can include a `_fields` query param that asks that only selected response fields are returned.

Props jsnajdr, timothyblynjacobs. 
Fixes #55213.
See #55567.



git-svn-id: https://develop.svn.wordpress.org/trunk@53217 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Greg Ziółkowski
2022-04-19 14:38:16 +00:00
parent abaee6aefb
commit 5ae266fdc4
2 changed files with 30 additions and 2 deletions

View File

@@ -2490,4 +2490,32 @@ class Tests_REST_API extends WP_UnitTestCase {
array( '', array(), array() ),
);
}
/**
* @ticket 55213
*/
public function test_rest_preload_api_request_fields() {
$preload_paths = array(
'/',
'/?_fields=description',
);
$preload_data = array_reduce(
$preload_paths,
'rest_preload_api_request',
array()
);
$this->assertSame( array_keys( $preload_data ), array( '/', '/?_fields=description' ) );
// Unfiltered request has all fields
$this->assertArrayHasKey( 'description', $preload_data['/']['body'] );
$this->assertArrayHasKey( 'routes', $preload_data['/']['body'] );
// Filtered request only has the desired fields + links
$this->assertSame(
array_keys( $preload_data['/?_fields=description']['body'] ),
array( 'description', '_links' )
);
}
}