问题是,我似乎无法获得帖子的特色图片。 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的插件。它将特色图片网址添加到原始API响应中。#2 楼
您可以通过在查询中添加_embed
作为参数来获得无插件的/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
评论
这会导致在Angular绑定中对其进行绑定时出现问题,请对wp:图像的json路径中的节点之一进行命名。我使用了其他答案中的插件,从而简化了图像的路径。
–史蒂夫
17-10-9在20:44
缺点:JSON变得更胖优点:不安装插件,不调用另一个http请求-> upvote
–拉斐尔VO
17年11月21日在17:10
应该如何将wp:featuredmedia转换为JSON?首先,我创建包含FeatureMedia的wp类。但这是行不通的。
–马赫迪
18年4月3日在6:17
您可以使用以下记号访问wp:。_embedded ['wp:term']
– ocajian
18年5月15日在8:21
如果使用函数从数组创建查询参数,并且没有键和值的组合就无法使用此函数,则可以将_embed用作键,将true用作值。
–鬼s
20 Nov 11'在8:11
#3 楼
我不会使用更好的rest API插件。它确实在其余的api中添加了特色图片,但也将其破坏了。这是我能够找到实际可行的最简单的解决方案。将以下代码添加到您的functions.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 );
#4 楼
您可以使用以下路径获取图像的名称:array_name._embedded ['wp:featuredmedia'] ['0']。source_url
#5 楼
我将图片直接添加到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;
}
#6 楼
尝试按照以下方式....................
URL:
/wp-json/wp/v2/posts?_embed
图像:
json["_embedded"]["wp:featuredmedia"][0]["source_url"],
工作正常。尝试
评论
谢谢。返回方便的URL。任何想法为什么插件本身不返回?我做错了什么还是API?
–阿卜杜勒·萨迪克·雅尔辛(Abdul Sadik Yalcin)
16年6月30日在21:06
它的API。还很早。会改善
– Michael Cropper
16年6月30日在21:08
问题解决了!它实际上确实返回了图像的ID,但我完全忘记了打开缓存了!但是无论如何,该插件更好,因为它直接返回url。
–阿卜杜勒·萨迪克·雅尔辛(Abdul Sadik Yalcin)
16年6月30日在22:14
@Devrim很高兴您解决了!如果迈克尔(Michael)的答案对您有帮助,您可以单击其左侧的对勾接受它,以向他人显示这是正确的答案。 :)
–蒂姆·马隆(Tim Malone)
16年6月30日在23:34