我正在使用WP REST API插件V2(http://wp-api.org/)。WP REST API如何上传精选图片?
API可以上传精选图片并生成相关元数据吗?我知道我可以上传一个图片附件(POST/wp-json/wp/v2/media),然后更新相关文章(PUT/wp-json/wp/v2/posts/ID)并将其“ featured_image“关键点指向附件标识。
但这是正确的方法吗?
是否有可能在上传后生成特征化图像的不同(调整大小)版本,还是需要自定义端点?
我正在使用WP REST API插件V2(http://wp-api.org/)。WP REST API如何上传精选图片?
API可以上传精选图片并生成相关元数据吗?我知道我可以上传一个图片附件(POST/wp-json/wp/v2/media),然后更新相关文章(PUT/wp-json/wp/v2/posts/ID)并将其“ featured_image“关键点指向附件标识。
但这是正确的方法吗?
是否有可能在上传后生成特征化图像的不同(调整大小)版本,还是需要自定义端点?
是的,这个插件解决了这个问题。见我最近的文章,并回答:
WP Rest API + AngularJS : How to grab Featured Image for display on page?
我能够从上传图片(离子移动)创建的图像ID的帖子。 我通过检查来自wp-json/wp/v2/posts/id的json响应发现了这个秘密调味酱。在数据部分,我看到“featured_media”,我读过需要将“featured_image”设置为一个身份证,但没有奏效。
所以我尝试在我的文章中设置“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
}]
}
我知道我可以上传图片附件(POST/WP-JSON/WP/V2 /媒体),然后更新相关的文章(PUT/WP -json/wp/v2/posts/ID)并将其“featured_image”关键点指向附件标识。 但是,这是做到这一点的正确方法吗?
据我可以告诉多数民众赞成的路要走。 WP API文档在解释所有这些时“有点”短小。而且还牵扯到一些挫折感,但最终我是如何运作的。
所以先上传媒体端点POST /wp-json/wp/v2/media
,用下面的HTTP标头和文件内容的数据:
'CURLOPT_HTTPHEADER' => [
'Content-type: application/json',
'Authorization: Basic ' . $base64Credentials,
'Content-Disposition: attachment; filename="acme.png"'
]
渔获这里是内容处理标头。 此呼叫应返回媒体ID,您现在需要拨打媒体ID拨打POST /wp-json/wp/v2/posts/{$existingPostId}
。
相同的标题,但没有Content-Disposition
。 这次数据应该是JSON编码{"featured_media": 156}
(你不必直接使用CURL。只要确保在HTTP头传递到请求)
在一个步骤做到这一点,你可以在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
我不得不说,对我来说,它将把'featured_media'设置为先前上传的媒体ID。就像它应该工作一样。 – pHiL