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ですか?
アブドゥルサディクヤルチン

1
そのAPI。まだ初期。それは改善されます
マイケルクロッパー

1
問題が解決しました!実際には画像のIDを返しますが、キャッシュをオンにしていたことを完全に忘れていました!しかし、とにかく、そのプラグインはURLを直接返すのでより良いです。
アブドゥルサディクヤルチン

@Devrimそれを解決してくれてうれしい!マイケルからのこの答えがあなたを助けたなら、あなたはそれが正しい答えであることを他の人に示すためにそれを受け入れるためにその左のチェックマークをクリックすることができます。:)
ティムマローン

61

_embedクエリにパラメータとして追加することにより、プラグインなしで取得できます

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

これは、Angularバインディングでバインドするときに問題を引き起こしwp:ます。これは、イメージへのjsonパス内のノードの1つの名前に対して行います。他の回答のプラグインを使用しました。これにより、画像へのパスが簡素化されます。
スティーブ

1
短所:JSONはより重い長所を得る:プラグインをインストールせず、別のhttp要求を呼び出さない->賛成票
Tho Vo

1
wp:featuredmediaをJSONに変換する方法 まず、featuredmediaを含むwpクラスを作成します。しかし、それは機能しません。
ケンジ

2
wp:にアクセスするには、次の表記を使用します。post._embedded ['wp:term']
オカジャン

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;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.