本帖最后由 hudba 于 2013-6-17 02:45 编辑
以前用到程序中要调用wordpress api的地方,探索了一下,这里整理一下发给大家,但愿对有需要的朋友有帮助。
准备工作:
使用C#调用,推荐vs2010,这里有下载:
http://www.microsoft.com/en-us/download/details.aspx?id=12187
程序和wordpress通信需要使用xmlrpc,需要从这里下载获得,(或者从我附带的压缩包里也可以获得):
http://xml-rpc.net/download.html
wordpress api的文档:
http://codex.wordpress.org/XML-RPC_WordPress_API
要点讲述:
vs里面建立solution:WordpressExample,然后引用xmlrpc的dll,如下图:
如何新建Post?
查看wordpress的文档,找到newPost操作需要传入的参数:
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost
其中,blog_id, username, password是每次调用api都需要传入的身份信息。如果不是mu版本,blog_id使用0。struct content部分是针对每个操作的具体的参数。不过不是每个参数都必须要传入。
定义api调用接口:
调用我们使用的xmlrpc类库,需要建立一个从IXmlRpcProxy继承来的interface,我们这里取名叫IWordpress,然后把调用的每个api操作的method写出来,因为此类库使用了反射,所以参数的名字必须要和文档里面一样。api的名字使用属性标识,例如:[XmlRpcMethod("wp.newPost")],这样你interface里面的方法名称可以取一个可读性高一点的名字。- public interface IWordpress : IXmlRpcProxy
- {
- [XmlRpcMethod("wp.newPost")]
- string NewPost(int blog_id, string username, string password, NewPostInput newPostInput);
- }
复制代码 建立一个方法方便程序里面调用:- public static string NewPost(string url, string username, string password, string title, string content)
- {
- IWordpress proxy = (IWordpress)XmlRpcProxyGen.Create(typeof(IWordpress));
- proxy.Url = url;
- NewPostInput postInput;
- postInput.post_title = title;
- postInput.post_content = content;
- postInput.post_status = "publish";
- string postId = proxy.NewPost(0, username, password, postInput);
- return postId;
- }
复制代码 这里我们首先通过XmlRpcProxyGen.Create创建了一个刚才IWordpress接口的对象,然后指定wordpress url和传入参数。
其中,作为Post内容的参数是个复合类型,所以我建立了一个struct来表示:- public struct NewPostInput
- {
- public string post_title;
- public string post_content;
- public string post_status;
- }
复制代码 文档里面的很多参数是可选的,所以作为例子,这里只有3个主要参数。注意,参数的名字要和文档里面的一样。
如何获取Post列表?
同NewPost一样,先查看文档,然后把api的定义写到IWordpress里面:- public interface IWordpress : IXmlRpcProxy
- {
- [XmlRpcMethod("wp.newPost")]
- string NewPost(int blog_id, string username, string password, NewPostInput newPostInput);
- [XmlRpcMethod("wp.getPosts")]
- XmlRpcStruct[] GetPosts(int blog_id, string username, string password);
- }
复制代码 接下来,建立一个方便用户调用的方法,GetPosts:- public static XmlRpcStruct[] GetPosts(string url, string username, string password)
- {
- IWordpress wordpress = (IWordpress)XmlRpcProxyGen.Create(typeof(IWordpress));
- wordpress.Url = url;
- XmlRpcStruct[] ret = wordpress.GetPosts(0, username, password);
- return ret;
- }
复制代码 这里返回的是XmlRpcStruct数组。XmlRpcStruct是可以通过字符串索引内容的,比如:ret[0]["post_title"],可以查询的字段名称在文档的return values里面有说明:
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.getPost
调用wordpress api的url是什么?
wordpress的安装目录下面有个xmlrpc.php,调用的url就是这个文件的web地址,比如:
http://www.example.com/xmlrpc.php
很少写东西,一动手才感觉简单的东西,自己虽然知道,但是表达出来挺别扭。(由己知彼,对写出一大堆教程的moon light更加佩服了)。
希望能对大家有帮助,为有这方面需要的朋友节约一点时间,附上源代码供大家动手试试:
WordpressExample.rar
(50.22 KB, 下载次数: 7)
|