WordPress 4.0 马上出来了,一个亮点就是 Restful API 的加入,今天我们提前来看看怎么获取 Restful API 的 JSON 的内容并显示出来。过程就是用 PHP 获取远程 JSON 的内容,然后把获取到的 JSON 转化为 PHP 对象,然后循环输出内容。通过 PHP 和 WordPress HTTP API 的方式都可以实现,我们先来看一下这两种方式的实现代码。
PHP fopen 方式
$handle = fopen("http://yoursite.com/news","rb");
$content = "";
while (!feof($handle)) {
$content .= fread($handle, 10000);
}
fclose($handle);
$content_array = json_decode($content); #JSON内容转换为PHP对象
WordPress HTTP API 方式
WordPress 给我们提供一套很方便的 HTTP API(详细使用方法参考 [WordPress HTTP API](http://codex.wordpress.org/HTTP_API)),我们可以使用 HTTP API 很方便的实现上面的功能。
$content = wp_remote_retrieve_body( wp_remote_get('http://yoursite.com/news'));
$content_obj = json_decode($content); #JSON内容转换为PHP对象
可以看出,WordPress 的方法是在是太简单了,一行代码就实现了 PHPfopen 方法几行的功能,并且功能更加语义化,理解起来更容易。
显示获取的内容
已经获取了 JSON 的内容,并转化为了 PHP 对象,显示的时候直接循环输出对象的内容就可以了。
foreach ($content_obj->data as $key)
echo $key->title;
}
适当的格式化上面的文字,显示出来的效果和直接调用 WordPress 内容是一样的。
10 thoughts on “通过 WordPress HTTP API 获取 Restful API 的 JSON 返回内容并解析”
上面的2个php 方式,
为什么访问没有用呢,都是500错误
有可能是插件版本更新,调用方法改变了,可以把代码发上来看看。
能举个具体的例子吗?我用了貌似解析不了,返回的是个空的。
http://sh.qihoo.com/api/hot_new.json?jsonp=1&callback=HotAjax.loadOk&type=day4&t=811632
是这个结果不是标准的JSON格式吗?
注意返回结果中的“HotAjax.loadOk”,这个里面的值才是 json 内容。
那要怎么搞呢?把HotAjax.loadOk去掉,返回的还是空的
http://sh.qihoo.com/api/hot_new.json?jsonp=1&callback=&type=day4&t=811632
可以了,把()里的用正则提取出来,然后再用json_decode就可以用了,谢谢
博主你好,我想请教你一个问题,我想给我的wordpress网站写一些网络接口,通过网络接口可以查询想要的数据,我在网上搜到答案说用JSON API插件,我安装之后不知道怎么查询具体某一篇博客的具体数据,另外,我有些特别的需求,需要返回自定义字段的值或写入自定义字段的值。在看到你这篇博客的时候,我觉得应该是我想要找的,但不知道怎么使用你这个方法,能否在说的详细一点,感谢博主!
官方文档介绍得很清楚了:http://v2.wp-api.org/reference/posts/。如果只是调用小部分数据,完全可以自己写一个接口。
谢谢你,博主
博主你好,我刚学wordpress。 我安装了json api,但是不知道怎么用啊。。