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);
    }  
  });
}

我肯定在帖子上设置了特色图片,但数据返回:

特色媒体?

任何帮助将不胜感激。

Answers:


1

看一下名为Better REST API Featured Image的插件。它将特色图片网址添加到原始API响应中。


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

1
它的API。还很早。它将得到改善
Michael Cropper

1
问题解决了!它实际上确实返回了图像的ID,但我完全忘记了打开缓存了!但是无论如何,该插件更好,因为它直接返回url。
阿卜杜勒·萨迪克·雅尔辛

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

61

您可以_embed在查询中添加param作为参数,而无需插件

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

当在Angular绑定中对其进行绑定时,请对wp:图像的json路径中的节点之一进行命名,从而导致问题。我使用了另一个答案中的插件,它简化了图像的路径。
史蒂夫·

1
缺点:JSON得到更多优点:不安装插件,不调用另一个http请求-> upvote
Tho Vo

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

2
您可以使用以下符号访问wp:post._embedded ['wp:term']
ocajian

11

我不会使用更好的rest 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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.