如何快速为 wordpress 网站开发对外的数据接口
也许有同学会说,wordpress 具有强大的主题切换能力,通过一个简单的主题预览插件就可以实现不同主题显示不同
的内容,接口就在另一个主题下实现!
没错,这种方式确实可以,但是由于 wordpress 目前 cms 功能越来越强大,很多网站都使用了自定义模板、
register_post_type、register_nav_menus 等功能,wordpress 的主题切换不能很好的兼容这些地方(即使
register_post_type 代码照搬)。即使克服了以上的困难,如果以后网站增加版块或者新功能,要维护就得同时改动
网站主题和 api 主题模板,工作量巨大。
那么有没有什么简单的方法呢?
当然有,不然我在这里罗里吧嗦开头那些屁话干啥!我的这个方法可以在原有的主题基础上进行方便的接口开发。
如何做呢?
首先在网站所用主题的 functions.php 文件中增加以下代码:
1: if(isset($_GET['json'])){
2: add_filter('template_include','wp_my_api');
3: }
4: function wp_my_api($template){
5: return preg_replace('#([^/]+\.php)#','api/$1',$template);
6: }
然后在网站当前所用主题目录下新建一个文件夹,名字为“api”。然后把主题下的模板文件复制进 api 文件夹里,就可
以对这些模板进行接口数据转化了。比如输出 json 或者 xml 等。
这种方法原理就是将 wordpress 的模板重新定义到 api 文件下寻找同名模板文件。如果你愿意做更多的探寻,还可以
实现更加智能的接口模板匹配功能出来。我这里就展示了最简单的方法。
这种方法完全不影响网站原有的模板文件,不需要改动任何原有模板,接口的实现在 api 文件夹下的同名文件里实现。
使用示例
要将你的主题下的 page.php 模板进行 json 化输出,只需要在 api 文件下新建一个叫 page.php 的模板(或者复制
page.php 过来),里面写入:
1: <?php //这里偷懒了,直接将 wordpress 的$wp_query 对象 json 化输出,实际中最好提取自己需要的内
容输出,以减少 http 传输量
2: header("Content-type:application/json");
3: if(isset($_GET['debug'])){
4: print_r($wp_query);
5: }else echo json_encode($wp_query);
比如网站有个页面,地址是 http://yoursite.com/pagename,其对应的接口地址就是 http://yoursite.com/
pagename?json。如果要调试,查看 json 接口,可以加上 debug 参数,如 http://yoursite.com/pagename?
json&debug。
是不是很简单呢?如果你的网站不需要这个接口了,只需要直接删除 api 文件夹就行了。
评论0