通过 api 在 wordpress.com 中添加特色图片

Posted

技术标签:

【中文标题】通过 api 在 wordpress.com 中添加特色图片【英文标题】:Adding featured image in wordpress.com via api 【发布时间】:2013-08-31 11:07:51 【问题描述】:

我想添加带有特色图片的新帖子,但首先将图片添加到帖子中。

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/$site/posts/new/ 我只找到了从控制台添加媒体的代码

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

并提及表单内容类型

"(...)要上传媒体,整个请求应该是 多部分/表单数据”

但是当我将“application/x-www-form-urlencoded”更改为“multipart/form-data”时 ...没有任何改变

【问题讨论】:

您的 header 上下文与 the example in the manual 不同。 我使用了来自 wordpress.com api developer.wordpress.com/docs/api/1/post/sites/%24site/posts/new的示例 【参考方案1】:

该 API 调用中的 media 参数仅用于上传本地图像文件,但您使用外部 URL 调用它。您应该改用 media_urls 参数。相关位from the documentation:

媒体:要附加到帖子的图像数组。要上传媒体,整个请求应该是多部分/表单数据编码的。多种的 媒体项目将显示在画廊中。接受图片(图片/gif, 仅限图像/jpeg、图像/png)。

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

media_urls:要附加到帖子的图片的 URL 数组。将媒体侧载到帖子中。

您的代码可能会更改为:

...
'content' => http_build_query(   
    array (
        'title' => $title,
        'content' => $content,
        'tags' => $tags_array,
        'categories' => $categories_array,
        'media_urls' => array($featuredimage)
    )
...

【讨论】:

以上是关于通过 api 在 wordpress.com 中添加特色图片的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 REST API 用于托管在 WordPress.com 上的网站吗[关闭]

如何在 UITableViewCell 中添加一张或多张图片?

在 Textview 中添加轮播视图

Jetpack 由 WordPress.com 出品

WordPress响应时间突然变慢了怎么回事

怎么优化wordpress网站