JSON API利用WordPress做数据源

多数的博客系统都是使用WordPress搭建的,而作为博客系统,可能我们需要在站外调用博客的文章,请求这个API接口,可以获取最新文章列表,一般通常的做法是新建一个PHP文件,接收几个参数,查询数据库,用JSON格式返回数据就行了。

WordPress的插件是非常强大的,几乎能完成我们需要的所有工作,有一款插件叫JSON API,就能将WordPress做API接口,在站外调用博客的文章列表。

一款叫JSON API的WordPress插件正是我要的功能,并且更全面,它可以返回最新文章,类别,作者,文章详情,就是在WordPress中几乎所有的内容都可以通过它来获取JSON格式的数据,它甚至可以通过传递json数据实现文章评论、用户注册。

有了这样一款插件,关键是有了这样一个API接口,可以不用费劲自己写API了,但是可以用来做什么呢?

比如我想做个微信公共帐号,用户输入1,返回最新文章列表,根据用户输入返回不同的内容,这就要请求API地址返回JSON格式的数据。

插件安装地址:http://wordpress.org/plugins/json-api/

安装好后,使用方法如下(本文只介绍几个常见的,其他的请参考插件说明文档):

隐式调用

显示调用

链接友好型调用

API返回的json数据如下:

{
"id": 450,
"type": "post",
"slug": "vue-%e6%9c%8d%e5%8a%a1%e7%ab%af%e6%b8%b2%e6%9f%93%ef%bc%88ssr%ef%bc%89-%e6%8e%98%e9%87%91%e8%bd%ac%e8%bd%bd",
"url": "https://www.xxxxx.xin/index.php/2018/03/07/vue-%e6%9c%8d%e5%8a%a1%e7%ab%af%e6%b8%b2%e6%9f%93%ef%bc%88ssr%ef%bc%89-%e6%8e%98%e9%87%91%e8%bd%ac%e8%bd%bd/",
"status": "publish",
"title": "Vue 服务端渲染(SSR) – 掘金(转载)",
"title_plain": "Vue 服务端渲染(SSR) – 掘金(转载)",
"content": "<p><b>Vue 服务端渲染(SSR) - 掘金</b><br />\nVue 服务端渲染(SSR)…</p>\n<p>March 7, 2018 at 10:49AM<br />\n<b>via Instapaper</b><br />\n<a href=\"https://juejin.im/post/5a9ca40b6fb9a028b77a4aac\">点击阅读 -></a></p>\n",
"excerpt": "<p>Vue 服务端渲染(SSR) - 掘金 Vue 服务端渲染(SSR)… March 7, 2018 at 10 &hellip; <a href=\"https://www.xxxxx.xin/index.php/2018/03/07/vue-%e6%9c%8d%e5%8a%a1%e7%ab%af%e6%b8%b2%e6%9f%93%ef%bc%88ssr%ef%bc%89-%e6%8e%98%e9%87%91%e8%bd%ac%e8%bd%bd/\" class=\"more-link\">继续阅读<span class=\"screen-reader-text\">Vue 服务端渲染(SSR) &#8211; 掘金(转载)</span></a></p>\n",
"date": "2018-03-07 11:24:52",
"modified": "2018-03-07 11:24:52",
-"categories": [
-{
"id": 3,
"slug": "%e6%8a%80%e8%83%bd%e5%82%a8%e5%a4%87",
"title": "技能储备",
"description": "",
"parent": 0,
"post_count": 40
}
],
-"tags": [
-{
"id": 38,
"slug": "ifttt",
"title": "IFTTT",
"description": "",
"post_count": 34
},
-{
"id": 39,
"slug": "instapaper",
"title": "Instapaper",
"description": "",
"post_count": 34
},
-{
"id": 42,
"slug": "%e5%88%86%e4%ba%ab",
"title": "分享",
"description": "",
"post_count": 28
},
-{
"id": 40,
"slug": "%e6%8a%80%e8%83%bd%e5%82%a8%e5%a4%87",
"title": "技能储备",
"description": "",
"post_count": 34
},
-{
"id": 41,
"slug": "%e8%bd%ac%e8%bd%bd",
"title": "转载",
"description": "",
"post_count": 31
}
],
-"author": {
"id": 1,
"slug": "extrastu",
"name": "extrastu",
"first_name": "",
"last_name": "",
"nickname": "extrastu",
"url": "",
"description": "一直在寻找"
},
"comments": [ ],
"attachments": [ ],
"comment_count": 0,
"comment_status": "open",
"custom_fields": { },
"taxonomy_bwg_tag": [ ]
}

可以看到,返回的内容太多了,也许我们只要最新列表中的标题和链接就够了。

http://www.example.org/api/get_recent_posts/?callback=show_posts_widget&;read_more=More&count=3

有很多参数可以选,比如count为返回的文章数目,参考官方文档吧。


扫描二维码,在手机上阅读!