2013-08-28 4 views
4

Я хочу добавить новое сообщение с признаком, но, во-первых, добавить изображение в сообщение.Добавление отображаемого изображения в wordpress.com через api

function add_post($access_key,$blogid,$title,$content,$categories_array,$tags_array,$featuredimage) 
    { 
    $options = array (
     'http' => 
     array (
     'ignore_errors' => true, 
     'method' => 'POST', 
     'header' => 
     array (
      0 => 'authorization: Bearer '.$access_key, 
      1 => 'Content-Type: multipart/form-data', 
     ), 
     'content' => http_build_query( 
      array (
      'title' => $title, 
      'content' => $content, 
      'tags' => $tags_array, 
      'categories' => $categories_array, 
      'media'=>$featuredimage,///array($featuredimage),//jak nie zadziala to zapakowac w array 
      'media[]'=>$featuredimage//array($featuredimage) 
     ) 
     ), 
    ), 
    ); 

    $context = stream_context_create($options); 
    $response = file_get_contents(
     "https://public-api.wordpress.com/rest/v1/sites/{$blogid}/posts/new/", 
     false, 
     $context 
    ); 
    $response = json_decode($response); 
    return $response; 
    } 

тело функции было скопировано из примеров и работает отлично, за исключением добавления СМИ

add_post($_GET['token'],$blog_id,"tytul","tresc",array("cat1"),array("tagt1","tag2"), "http://icons.iconarchive.com/icons/iconka/meow/256/cat-walk-icon.png"); 

добавить сообщения без добавления изображения

в документации
http://developer.wordpress.com/docs/api/1/post/sites/ $ сайта/сообщениях/новые/ я нашел только код для добавления носителя с консоли

curl \ 
--form 'title=Image' \ 
--form 'media[][email protected]/path/to/file.jpg' \ 
-H 'Authorization: BEARER your-token' \ 
'https://public-api.wordpress.com/rest/v1/sites/123/posts/new' 

и упоминание о форме типа контента

"(...) Для того, чтобы загрузить СМИ, весь запрос должен быть многочастному/форм-данных"

, но когда я изменил «приложений/x-www-form-urlencoded "в" multipart/form-data " ... и ничего не изменилось

+0

Ваш 'контексте header' отличается от [к примеру, в руководстве] (http://php.net/manual/en/function.file- получить-contents.php). – brasofilo

+0

Я использовал пример из wordpress.com api http://developer.wordpress.com/docs/api/1/post/sites/%24site/posts/new/ –

ответ

2

Параметр media в этом вызове API используется только для загрузки локальных файлов изображений, но вы его вызываете с внешним URL. Вместо этого вы должны использовать параметр media_urls. Соответствующий бит from the documentation:

СМИ: Массив изображений прикрепить к сообщению. Чтобы загрузить носитель, весь запрос должен быть закодирован в формате multipart/form-data. В галерее будут отображаться несколько объектов . Принимает изображения (изображение/gif, image/jpeg, image/png) только.

Example: curl --form 'title=Image' --form 'media[][email protected]/path/to/file.jpg' ... 

media_urls: Массив адресов для изображений, чтобы прикрепить к сообщению. Посылает носители для публикации.

Ваш код может измениться на:

... 
'content' => http_build_query( 
    array (
     'title' => $title, 
     'content' => $content, 
     'tags' => $tags_array, 
     'categories' => $categories_array, 
     'media_urls' => array($featuredimage) 
    ) 
... 
Смежные вопросы