Prepares a single post output for response.
public prepare_item_for_response ( WP_Post $post, WP_REST_Request $request ) : WP_REST_Response | ||
$post | WP_Post | Post object. |
$request | WP_REST_Request | Request object. |
Результат | WP_REST_Response | Response object. |
/** * Prepare term * @param WP_REST_Response $response * @param WP_Term $term * @param WP_REST_Request $request * @return WP_REST_Response */ function anunang_api_prepare_term($response, $term, $request) { $args = array('tax_query' => array(array('taxonomy' => $term->taxonomy, 'field' => 'slug', 'terms' => $term->slug)), 'posts_per_page' => 5); $posts = get_posts($args); $posts_arr = array(); foreach ($posts as $p) { $rest_post = new WP_REST_Posts_Controller($p->post_type); $posts_arr[] = $rest_post->prepare_item_for_response($p, $request)->data; } $response->data['posts'] = $posts_arr; return $response; }
/** * Convert post objects to formatted objects. * @param array $data Array of post objects. You can pass get_posts() results here * @param bool $return_json Optional. Whether to return as JSON, the default, or not. * * @return array */ public static function get_data($data, $return_json = true) { $posts = $data; $data = array(); $request = new \WP_REST_Request(); $request['context'] = 'view'; foreach ($posts as $post) { if (!is_object($post)) { if (0 < absint($post)) { $post = get_post($post); } else { continue; } } if (!is_a($post, '\\WP_Post')) { continue; } $controller = new \WP_REST_Posts_Controller($post->post_type); $data[] = self::prepare_data($controller->prepare_item_for_response($post, $request), $return_json); } return $data; }
/** * Prepares a single attachment output for response. * * @since 4.7.0 * @access public * * @param WP_Post $post Attachment object. * @param WP_REST_Request $request Request object. * @return WP_REST_Response Response object. */ public function prepare_item_for_response($post, $request) { $response = parent::prepare_item_for_response($post, $request); $data = $response->get_data(); $data['description'] = array('raw' => $post->post_content, 'rendered' => apply_filters('the_content', $post->post_content)); /** This filter is documented in wp-includes/post-template.php */ $caption = apply_filters('the_excerpt', apply_filters('get_the_excerpt', $post->post_excerpt, $post)); $data['caption'] = array('raw' => $post->post_excerpt, 'rendered' => $caption); $data['alt_text'] = get_post_meta($post->ID, '_wp_attachment_image_alt', true); $data['media_type'] = wp_attachment_is_image($post->ID) ? 'image' : 'file'; $data['mime_type'] = $post->post_mime_type; $data['media_details'] = wp_get_attachment_metadata($post->ID); $data['post'] = !empty($post->post_parent) ? (int) $post->post_parent : null; $data['source_url'] = wp_get_attachment_url($post->ID); // Ensure empty details is an empty object. if (empty($data['media_details'])) { $data['media_details'] = new stdClass(); } elseif (!empty($data['media_details']['sizes'])) { foreach ($data['media_details']['sizes'] as $size => &$size_data) { if (isset($size_data['mime-type'])) { $size_data['mime_type'] = $size_data['mime-type']; unset($size_data['mime-type']); } // Use the same method image_downsize() does. $image_src = wp_get_attachment_image_src($post->ID, $size); if (!$image_src) { continue; } $size_data['source_url'] = $image_src[0]; } $full_src = wp_get_attachment_image_src($post->ID, 'full'); if (!empty($full_src)) { $data['media_details']['sizes']['full'] = array('file' => wp_basename($full_src[0]), 'width' => $full_src[1], 'height' => $full_src[2], 'mime_type' => $post->post_mime_type, 'source_url' => $full_src[0]); } } else { $data['media_details']['sizes'] = new stdClass(); } $context = !empty($request['context']) ? $request['context'] : 'view'; $data = $this->filter_response_by_context($data, $context); // Wrap the data in a response object. $response = rest_ensure_response($data); $response->add_links($this->prepare_links($post)); /** * Filters an attachment returned from the REST API. * * Allows modification of the attachment right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Post $post The original attachment post. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters('rest_prepare_attachment', $response, $post, $request); }
/** * Prepare a single post output for response. * * @param \WP_Post $post Post object. * @param \WP_REST_Request $request Request object. * @return \WP_REST_Response $response Response. */ public function prepare_item_for_response($post, $request) { $response = parent::prepare_item_for_response($post, $request); $response->data['content'] = $this->snapshot_post_type->get_post_content($post); return $response; }
/** * Prepare a single attachment output for response * * @param WP_Post $post Post object * @param WP_REST_Request $request Request object * @return array $response */ public function prepare_item_for_response($post, $request) { $response = parent::prepare_item_for_response($post, $request); $data = $response->get_data(); $data['alt_text'] = get_post_meta($post->ID, '_wp_attachment_image_alt', true); $data['caption'] = $post->post_excerpt; $data['description'] = $post->post_content; $data['media_type'] = wp_attachment_is_image($post->ID) ? 'image' : 'file'; $data['media_details'] = wp_get_attachment_metadata($post->ID); $data['post'] = !empty($post->post_parent) ? (int) $post->post_parent : null; $data['source_url'] = wp_get_attachment_url($post->ID); // Ensure empty details is an empty object if (empty($data['media_details'])) { $data['media_details'] = new stdClass(); } elseif (!empty($data['media_details']['sizes'])) { $img_url_basename = wp_basename($data['source_url']); foreach ($data['media_details']['sizes'] as $size => &$size_data) { // Use the same method image_downsize() does $image_src = wp_get_attachment_image_src($post->ID, $size); if (!$image_src) { continue; } $size_data['source_url'] = $image_src[0]; } } else { $data['media_details']['sizes'] = new stdClass(); } $context = !empty($request['context']) ? $request['context'] : 'view'; $data = $this->filter_response_by_context($data, $context); // Wrap the data in a response object $data = rest_ensure_response($data); $data->add_links($this->prepare_links($post)); /** * Filter an attachment returned from the API. * * Allows modification of the attachment right before it is returned. * * @param array $data Key value array of attachment data: alt_text, caption, description, * media_type, media_details, post, source_url. Piossibly media_details. * @param WP_Post $post The attachment post. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters('rest_prepare_attachment', $data, $post, $request); }
/** * Prepare a single attachment output for response * * @param WP_Post $post Post object * @param WP_REST_Request $request Request object * @return array $response */ public function prepare_item_for_response($post, $request) { $response = parent::prepare_item_for_response($post, $request); $data = $response->get_data(); $data['alt_text'] = get_post_meta($post->ID, '_wp_attachment_image_alt', true); $data['caption'] = $post->post_excerpt; $data['description'] = $post->post_content; $data['media_type'] = wp_attachment_is_image($post->ID) ? 'image' : 'file'; $data['media_details'] = wp_get_attachment_metadata($post->ID); $data['post'] = !empty($post->post_parent) ? (int) $post->post_parent : null; $data['source_url'] = wp_get_attachment_url($post->ID); // Ensure empty details is an empty object if (empty($data['media_details'])) { $data['media_details'] = new stdClass(); } elseif (!empty($data['media_details']['sizes'])) { $img_url_basename = wp_basename($data['source_url']); foreach ($data['media_details']['sizes'] as $size => &$size_data) { // Use the same method image_downsize() does $image_src = wp_get_attachment_image_src($post->ID, $size); if (!$image_src) { continue; } $size_data['source_url'] = $image_src[0]; } } else { $data['media_details']['sizes'] = new stdClass(); } $context = !empty($request['context']) ? $request['context'] : 'view'; $data = $this->filter_response_by_context($data, $context); // Wrap the data in a response object $data = rest_ensure_response($data); $data->add_links($this->prepare_links($post)); return apply_filters('rest_prepare_attachment', $data, $post, $request); }