WP Rest API-추천 이미지를 얻는 방법


24

나는이 API를 처음 접했고 실제로 지금까지 몇 시간을 보냈습니다. 연구를했지만 아무것도 찾을 수 없습니다 ...

문제는 게시물의 추천 이미지를 얻을 수없는 것입니다. JSON이를 반환합니다 "featured_media: 0".

getPosts: function() {
  var burl = "http://www.example.com/wp-json/wp/v2/posts";
  var dataDiv = document.getElementById('cards');
  $.ajax({
    url: burl,
    data: data,
    type: 'GET',
    async: false,
    processData: false,
    beforeSend: function (xhr) {
      if (xhr && xhr.overrideMimeType) {
        xhr.overrideMimeType('application/json;charset=utf-8');
      }
    },
    dataType: 'json',
    success: function (data) {
      console.log(data);
      //question: data->featured_image: 0?!
      var theUl = document.getElementById('cards');
      for (var key in data) {
        //data[key]['']...
        //doing my stuff here
      }
    },
    error: function(e) {
      console.log('Error: '+e);
    }  
  });
}

게시물에 추천 이미지를 설정했지만 데이터가 반환됩니다.

특집 미디어?

도움을 주시면 감사하겠습니다.

답변:


1

Better REST API Featured Image 라는 플러그인을 살펴보십시오 . 추천 이미지 URL을 원래 API 응답에 추가합니다.


고맙습니다. 편리한 URL을 반환합니다. 왜 플러그인 자체 플러그인이 그것을 반환하지 않는지 알고 있습니까? 내가 잘못하고 있거나 API입니까?
Abdul Sadik Yalcin 2016 년

1
API입니다. 아직 초기입니다. 그것은 향상 될 것입니다
Michael Cropper 2016 년

1
문제 해결됨! 실제로 이미지의 ID를 반환하지만 캐시를 켠 것을 완전히 잊었습니다! 그러나 어쨌든 해당 플러그인은 URL을 직접 반환하므로 더 좋습니다.
Abdul Sadik Yalcin

@Devrim 다행 이네요! Michael의 답변이 도움이 되었으면 왼쪽에있는 틱을 클릭하여 다른 사람이 올바른 답변임을 표시하도록 수락 할 수 있습니다. :)
Tim Malone 2016 년

61

당신은 _embed당신의 쿼리에 매개 변수로 추가하여 플러그인없이 얻을 수 있습니다

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed

이것은 Angular 바인딩에서 바인딩 할 때 문제를 일으 킵니다 wp:. 이미지에 대한 json 경로의 노드 중 하나의 이름을 지정하십시오. 다른 답변의 플러그인을 사용하여 이미지 경로를 단순화했습니다.
Steve

1
단점 : JSON은 무거운 프로를 얻는다 : 플러그인을 설치하지 않고 다른 http 요청을 호출하지 않음-> upvote
Tho Vo

1
wp : featuredmedia를 JSON으로 어떻게 변환해야합니까? 먼저 featuremedia가 포함 된 wp 클래스를 만듭니다. 그러나 작동하지 않습니다.
Kenji

2
이 표기법 게시물을 사용하여 wp :에 액세스 할 수 있습니다 ._embedded [ 'wp : term']
ocajian

11

더 나은 휴식 API 플러그인을 사용하지 않을 것입니다. 나머지 API에 추천 이미지를 추가했지만 파산했습니다.

이것이 실제로 작동하는 것을 찾을 수있는 가장 간단한 솔루션입니다. functions.php에 다음 코드를 추가하십시오 :

<?php

    function post_fetured_image_json( $data, $post, $context ) {
        $featured_image_id = $data->data['featured_media']; // get featured image id
        $featured_image_url = wp_get_attachment_image_src( $featured_image_id, 'original' ); // get url of the original size

        if( $featured_image_url ) {
            $data->data['featured_image_url'] = $featured_image_url[0];
        }

        return $data;
    }
    add_filter( 'rest_prepare_post', 'post_fetured_image_json', 10, 3 );

?>

4

이 경로를 사용하여 이미지 이름을 얻을 수 있습니다.

array_name._embedded [ 'wp : featuredmedia'] [ '0']. source_url


1

API 응답에 직접 이미지를 추가하여 이미지에 대한 바로 가기를 만들었습니다.


//Add in functions.php, this hook is for  my 'regions' post type
add_action( 'rest_api_init', 'create_api_posts_meta_field' );

function create_api_posts_meta_field() {
  register_rest_field( 'regions', 'group', array(
         'get_callback'    => 'get_post_meta_for_api',
         'schema'          => null,
      )
  );
}

//Use the post ID to query the image and add it to your payload
function get_post_meta_for_api( $object ) {
  $post_id = $object['id'];
  $post_meta = get_post_meta( $post_id );
  $post_image = get_post_thumbnail_id( $post_id );      
  $post_meta["group_image"] = wp_get_attachment_image_src($post_image)[0];

  return $post_meta;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.