WP REST API如何上传精选图片?

时间:2015-10-13 13:16:31

标签: wordpress rest

我正在使用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。

但这是正确的方法吗?

上传后是否可以生成特色图片的不同(已调整大小)版本,还是需要自定义端点?

4 个答案:

答案 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?