2015-10-13 3 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

Я был в состоянии создать сообщение с идентификатором изображения от загрузки изображения (ионный мобильный). Я нашел секретный соус, изучив ответ json от wp-json/wp/v2/posts/id

В разделе данных я увидел «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 
       }] 
      } 
+0

Должен сказать, что для меня он работает с установкой 'featured_media' на предыдущий загруженный идентификатор носителя. точно так же, как это должно было работать. – pHiL

5

Я знаю, что могу загрузить вложение изображения (POST/сор-JSON/шр/v2/СМИ), а затем обновить соответствующую статью (PUT/WP -json/wp/v2/posts/ID) и сделать ключевой пункт «featured_image» для идентификатора вложения. Но это правильный способ сделать это?

Насколько я могу судить, это путь. WP API docs «немного» объясняет все это. И было довольно разочарование, но, в конце концов, именно так я получил его работу.

Так первая загрузить СМИ к конечной точке POST /wp-json/wp/v2/media, со следующими заголовками HTTP и содержимое файла как данные:

  'CURLOPT_HTTPHEADER' => [ 
      'Content-type: application/json', 
      'Authorization: Basic ' . $base64Credentials, 
      'Content-Disposition: attachment; filename="acme.png"' 
      ] 

Подвох был Content-Disposition заголовка. Этот вызов должен вернуть идентификатор носителя, который вам понадобится для звонка 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; 
} 

Итак, ваш вызов может передать параметр для post ID для прикрепления носителя. Что-то вроде этого:

http://yoursite.com/wp-json/wp/v2/media?featured=1234 
Смежные вопросы