私はこの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);
}
});
}
私は間違いなく投稿におすすめの画像を設定しましたが、データが返されます。
任意の助けをいただければ幸いです。
と呼ばれるプラグインを見てみましょうREST API注目の画像 。注目の画像URLを元のAPIレスポンスに追加します。
あなたのクエリに_embed
としてparamを追加することでプラグインなしでそれを得ることができます
/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
私はより良い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 );
?>
このパスで画像の名前を取得することができます:
array_name._embedded ['wp:featuredmedia'] ['0']。source_url
私はそれを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;
}