The rest_filter_response_by_context() WordPress PHP function filters the response to remove any fields not available in the given context.
Usage
$filtered_response = rest_filter_response_by_context( $response_data, $schema, $context );
Parameters
$response_data
(array|object): Required. The response data to modify.$schema
(array): Required. The schema for the endpoint used to filter the response.$context
(string): Required. The requested context.
More information
See WordPress Developer Resources: rest_filter_response_by_context()
Examples
Filter post response data
In this example, we filter the post response data by the ‘view’ context.
// Define the post response data $post_response_data = [ 'id' => 123, 'title' => 'Example Post', 'content' => 'This is an example post content.', ]; // Define the post schema $post_schema = [ 'id' => [ 'context' => ['view', 'edit'], ], 'title' => [ 'context' => ['view', 'edit'], ], 'content' => [ 'context' => ['edit'], ], ]; // Filter the post response data by 'view' context $filtered_response = rest_filter_response_by_context( $post_response_data, $post_schema, 'view' ); // The $filtered_response will contain only the 'id' and 'title' fields
Filter custom endpoint response data
In this example, we filter custom endpoint response data by the ’embed’ context.
// Define the custom endpoint response data $custom_response_data = [ 'id' => 456, 'name' => 'John Doe', 'email' => '[email protected]', ]; // Define the custom endpoint schema $custom_schema = [ 'id' => [ 'context' => ['view', 'embed'], ], 'name' => [ 'context' => ['view', 'embed'], ], 'email' => [ 'context' => ['view'], ], ]; // Filter the custom endpoint response data by 'embed' context $filtered_response = rest_filter_response_by_context( $custom_response_data, $custom_schema, 'embed' ); // The $filtered_response will contain only the 'id' and 'name' fields
Filter term response data
In this example, we filter term response data by the ‘edit’ context.
// Define the term response data $term_response_data = [ 'id' => 789, 'name' => 'Category 1', 'slug' => 'category-1', ]; // Define the term schema $term_schema = [ 'id' => [ 'context' => ['view', 'edit'], ], 'name' => [ 'context' => ['view', 'edit'], ], 'slug' => [ 'context' => ['edit'], ], ]; // Filter the term response data by 'edit' context $filtered_response = rest_filter_response_by_context( $term_response_data, $term_schema, 'edit' ); // The $filtered_response will contain all fields: 'id', 'name', and 'slug'