prepare_item_for_response() 공개 메소드

Prepares a single post output for response.
부터: 4.7.0
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.
예제 #1
0
파일: api.php 프로젝트: tormjens/ngpress
/**
 * 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;
}
예제 #2
0
 /**
  * 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);
 }