我正在使用WP REST API插件V2(http://wp-api.org/)。
API可以上传精选图片并生成相关的元数据吗?
我知道我可以上传图片附件(POST / wp-json / wp / v2 / media),然后更新相关文章(PUT / wp-json / wp / v2 / posts / ID)并制作其“featured_image” “关键点指向附件ID。
但这是正确的方法吗?
上传后是否可以生成特色图片的不同(已调整大小)版本,还是需要自定义端点?
答案 0 :(得分:8)
我知道我可以上传图片附件(POST / wp-json / wp / v2 / media),然后更新相关文章(PUT / wp-json / wp / v2 / posts / ID)并制作其&# 34; featured_image"关键点指向附件ID。 但这是正确的方法吗?
据我所知,这是可行的方法。 WP API文档是"有点"解释所有这些。并且涉及到相当多的挫败感,但最终确切地说我是如何使它发挥作用的。
首先将媒体上传到端点SELECT
[Measures].[Sales_in_USD] ON 0,
{[Product].[Product].&[Product1],
[Store].[Store Name].MEMBERS
} ON 1
FROM [Cube Name];
,并将以下HTTP标头和文件内容作为数据:
POST /wp-json/wp/v2/media
这里的问题是Content-Disposition标头。
此调用应返回媒体ID,您现在需要调用 'CURLOPT_HTTPHEADER' => [
'Content-type: application/json',
'Authorization: Basic ' . $base64Credentials,
'Content-Disposition: attachment; filename="acme.png"'
]
。
相同的标题但没有POST /wp-json/wp/v2/posts/{$existingPostId}
。
这次数据应该是JSON编码Content-Disposition
(您不必直接使用CURL。只需确保将HTTP标头传入请求中)
答案 1 :(得分:0)
我能够通过上传图片(离子移动设备)创建一个带有图片ID的帖子。 我通过检查来自wp-json / wp / v2 / posts / id的json响应找到了秘密酱
在数据部分,我看到" featured_media",我读过我需要设置" featured_image"一个id,但那不起作用。
所以我尝试设置" featured_media"在我的帖子中的值,它的工作原理。
我尝试了一切,在我尝试之前没有任何效果。
" post_meta"数组没有任何效果,但我把它留在那里,因为那是他们在我所能找到的(稀疏)文档中所说的。
这对我有用:
$scope.http({
method: "POST",
url: "http://<domain>/wp-json/wp/v2/posts" ,
headers: { 'Authorization' : 'Basic ' + $scope.au },
data: {
title: $scope.postData.title,
content: $scope.postData.content,
status: $scope.postData.status,
featured_media: $scope.imageid,
post_meta: [
{
"key": "_thumbnail_id",
"value": $scope.imageid
}]
}
答案 2 :(得分:0)
要一步完成此操作,您可以在PHP中添加一个过滤器,如下所示:
add_filter('rest_prepare_attachment', 'attach_media_to_post',10,3);
function attach_media_to_post($response, $post, $request) {
if($request->get_method()!='POST'){
return $response;
}
$parameters = $request->get_params();
if(isset($parameters['featured'])){
set_post_thumbnail($parameters['featured'],$post->ID);
}
return $response;
}
因此,您的呼叫可以传递帖子ID的参数以附加媒体。像这样:
http://yoursite.com/wp-json/wp/v2/media?featured=1234
答案 3 :(得分:-3)
是的,这个插件解决了这个问题。请参阅我最近的帖子并回答:
WP Rest API + AngularJS : How to grab Featured Image for display on page?