2015-10-13 18 views
2

我正在使用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“关键点指向附件标识。

但这是正确的方法吗?

是否有可能在上传后生成特征化图像的不同(调整大小)版本,还是需要自定义端点?

回答

0

我能够从上传图片(离子移动)创建的图像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 
       }] 
      } 
+0

我不得不说,对我来说,它将把'featured_media'设置为先前上传的媒体ID。就像它应该工作一样。 – pHiL

5

我知道我可以上传图片附件(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头传递到请求)

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