我对这个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的插件。它将特色图片网址添加到原始API响应中。

评论


谢谢。返回方便的URL。任何想法为什么插件本身不返回?我做错了什么还是API?

–阿卜杜勒·萨迪克·雅尔辛(Abdul Sadik Yalcin)
16年6月30日在21:06

它的API。还很早。会改善

– Michael Cropper
16年6月30日在21:08

问题解决了!它实际上确实返回了图像的ID,但我完全忘记了打开缓存了!但是无论如何,该插件更好,因为它直接返回url。

–阿卜杜勒·萨迪克·雅尔辛(Abdul Sadik Yalcin)
16年6月30日在22:14

@Devrim很高兴您解决了!如果迈克尔(Michael)的答案对您有帮助,您可以单击其左侧的对勾接受它,以向他人显示这是正确的答案。 :)

–蒂姆·马隆(Tim Malone)
16年6月30日在23:34

#2 楼

您可以通过在查询中添加_embed作为参数来获得无插件的

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


评论


这会导致在Angular绑定中对其进行绑定时出现问题,请对wp:图像的json路径中的节点之一进行命名。我使用了其他答案中的插件,从而简化了图像的路径。

–史蒂夫
17-10-9在20:44



缺点:JSON变得更胖优点:不安装插件,不调用另一个http请求-> upvote

–拉斐尔VO
17年11月21日在17:10

应该如何将wp:featuredmedia转换为JSON?首先,我创建包含FeatureMedia的wp类。但这是行不通的。

–马赫迪
18年4月3日在6:17

您可以使用以下记号访问wp:。_embedded ['wp:term']

– ocajian
18年5月15日在8:21

如果使用函数从数组创建查询参数,并且没有键和值的组合就无法使用此函数,则可以将_embed用作键,将true用作值。

–鬼s
20 Nov 11'在8:11



#3 楼

我不会使用更好的rest API插件。它确实在其余的api中添加了特色图片,但也将其破坏了。

这是我能够找到实际可行的最简单的解决方案。将以下代码添加到您的functions.php中:

 <?php

function post_featured_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_featured_image_json', 10, 3 );

 


#4 楼

您可以使用以下路径获取图像的名称:

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

#5 楼

我将图片直接添加到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;
}


#6 楼

尝试按照以下方式
....................
URL:/wp-json/wp/v2/posts?_embed
图像:json["_embedded"]["wp:featuredmedia"][0]["source_url"],
工作正常。尝试