WP_REST_Post_Statuses_Controller::prepare_item_for_response PHP Method

prepare_item_for_response() public method

Prepares a post status object for serialization.
Since: 4.7.0
public prepare_item_for_response ( stdClass $status, WP_REST_Request $request ) : WP_REST_Response
$status stdClass Post status data.
$request WP_REST_Request Full details about the request.
return WP_REST_Response Post status data.
    public function prepare_item_for_response($status, $request)
    {
        $data = array('name' => $status->label, 'private' => (bool) $status->private, 'protected' => (bool) $status->protected, 'public' => (bool) $status->public, 'queryable' => (bool) $status->publicly_queryable, 'show_in_list' => (bool) $status->show_in_admin_all_list, 'slug' => $status->name);
        $context = !empty($request['context']) ? $request['context'] : 'view';
        $data = $this->add_additional_fields_to_object($data, $request);
        $data = $this->filter_response_by_context($data, $context);
        $response = rest_ensure_response($data);
        if ('publish' === $status->name) {
            $response->add_link('archives', rest_url('wp/v2/posts'));
        } else {
            $response->add_link('archives', add_query_arg('status', $status->name, rest_url('wp/v2/posts')));
        }
        /**
         * Filters a status returned from the REST API.
         *
         * Allows modification of the status data right before it is returned.
         *
         * @since 4.7.0
         *
         * @param WP_REST_Response $response The response object.
         * @param object           $status   The original status object.
         * @param WP_REST_Request  $request  Request used to generate the response.
         */
        return apply_filters('rest_prepare_status', $response, $status, $request);
    }

Usage Example

 public function test_prepare_item()
 {
     $obj = get_post_status_object('publish');
     $endpoint = new WP_REST_Post_Statuses_Controller();
     $data = $endpoint->prepare_item_for_response($obj, new WP_REST_Request());
     $this->check_post_status_obj($obj, $data->get_data());
 }