WP REST API-如何获取特色图像

时间:2016-06-30 作者:Abdul Sadik Yalcin

我对这个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);
    }  
  });
}
我确实在帖子上设置了一个特色图片,但数据返回:

featured media?

任何帮助都将不胜感激。

8 个回复
最合适的回答,由SO网友:Eslam Mahmoud 整理而成

您可以通过添加_embed作为查询的参数

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

SO网友:Null TX

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

这是我能找到的最简单的解决方案,它实际上是有效的。将以下代码添加到函数中。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 );

SO网友:RobK

您可以通过以下路径获取图像的名称:

array\\u名称_嵌入式[\'wp:featuredmedia\'][\'0\']。source\\u url

SO网友:Michael Cropper

看看一个名为Better REST API Featured Image. 它将特色图像URL添加到原始API响应中。

SO网友:lakewood

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

SO网友:MAM.AASIM

尝试以下方式。。。。。。。。。。。。。。。。。。。。

URL:/wp-json/wp/v2/posts?_embed

图片:json["_embedded"]["wp:featuredmedia"][0]["source_url"],

它工作得很好。尝试

SO网友:Jay Pokale

我安装了Yoast SEO插件,发现其中提供了特色图片URL。AfterURL:/wp-json/wp/v2/posts?_embed

您可以在以下位置找到特色图像:yoast_head_json > robots > og_image > url

SO网友:Jay Pokale

安装Yoast SEO插件

将数据从wp rest api获取到javascript

 async function fetchPosts() {
 const responce = await fetch(\'https://example.com/wp-json/wp/v2/posts\');
 return responce.json();}
我正在用HTML显示10幅图像(我在.HTML文件中使用了ID=posts)

 (async () => {
 var images = \'\';
 for (var i = 0; i < 10; i++) {
     var obj = `<img src = \'${(await fetchPosts())[i].yoast_head_json.og_image[0].url}\' width="500"></img>`;
     images += obj;
     document.getElementById(\'posts\').innerHTML = `${images}`
 }})()

相关推荐

Teme.json会被缓存吗?我怎么才能清除它呢?

我用一个主题设置了一个主题。json文件,现在我想对其进行一些更改。我无法进行更改。。。我在当地工作。我猜这是缓存问题,但我不知道如何清除它。我安装了WP Rest缓存插件,用它来清除Rest缓存不起作用。我停用了它,仍然没有看到变化</我读到,切换当前主题可能会奏效,但事实并非如此</我正在使用wp-rig,当我渲染生产主题并切换到该主题时,我确实看到了我的更改。当我切换回工作副本时,仍然没有更改还有其他人遇到过这个吗?