Wordpress Atom协议的使用

最近想用wordpress最为一个数据展示系统,需要将数据导入到wordpress系统中,网上找半天,未发现有人对此做过应用及介绍,只好自己来研究了。 通过wordpress.org 了解是wp-app.php 文件提供了atom功能,打开源码,就可以找到其支持的各种方法,POST、GET、DELETE等,如下:

$this->selectors = array( '@/service$@' => array('GET' => 'get_service'), '@/categories$@' => array('GET' => 'get_categories_xml'), '@/post/(\d+)$@' => array('GET' => 'get_post', 'PUT' => 'put_post', 'DELETE' => 'delete_post'), '@/posts/?(\d+)?$@' => array('GET' => 'get_posts', 'POST' => 'create_post'), '@/attachments/?(\d+)?$@' => array('GET' => 'get_attachment', 'POST' => 'create_attachment'), '@/attachment/file/(\d+)$@' => array('GET' => 'get_file', 'PUT' => 'put_file', 'DELETE' => 'delete_file'), '@/attachment/(\d+)$@' => array('GET' => 'get_attachment', 'PUT' => 'put_attachment', 'DELETE' => 'delete_attachment'), ); 然后就是用curl 进行一个一个测试,目前我不知道windows是否有相似的工具,我是在ubuntu下进行的测试,经过千辛万苦,终于将基本的操作方法搞明白了。 重要的两个方法 1.DELETE 删除一篇文章 curl -v -X DELETE -u admin:333 http://liangpeng.net/wp-app.php/post/3 其中的-u指定用户名密码 2.POST 创建一篇新文章 curl -v -X POST --data @t.xml -H "Content-Type:application/atom+xml" -u admin:333 http://liangpeng.net/wp-app.php/posts/ 其中-H是设置http请求的头信息,在服务器端会进行Content-type类型验证,所以必须增加此信息 其中@t.xml是一个文章内容的xml文件,可以通过 http://liangpeng.net/wp-app.php/post/2 获取到一个真实数据,修改下就能用了,我是直接把多余的信息全部删除,只剩下标题和内容字段,测试有效。

目前两个操作基本满足我的需求,关于Get,直接使用 http://liangpeng.net/wp-app.php/post/? 既可以获得,很是简单,当让也需要用户名密码。

注意:

  1. wp-app.php 只接受/post/(/d)+格式的url重写,如果你的服务器不支持,请设置,目前apache下貌似使用wordpress自己生成的.htaccess即可,nginx我还没搞定
  2. 之前一遍英文文章(http://torrez.us/archives/2006/08/21/486/)介绍的使用cookie登录,貌似现在已经不行了,wp-app.php使用的是$_SERVER获取的User变量,curl 可以通过参数 -u 直接传递。