web-dev-qa-db-ja.com

WP Rest API - おすすめの画像を取得する方法

私はこの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? 

任意の助けをいただければ幸いです。

21

と呼ばれるプラグインを見てみましょうREST AP​​I注目の画像 。注目の画像URLを元のAPIレスポンスに追加します。

1
Michael Cropper

あなたのクエリに_embedとしてparamを追加することでプラグインなしでそれを得ることができます

/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
56
Eslam Mahmoud

私はより良い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 );

?>
8
Null TX

このパスで画像の名前を取得することができます:

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

4
RobK

私はそれを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;
}
1
vars