wordpress api快速入门
本帖最后由 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的名字使用属性标识,例如:,这样你interface里面的方法名称可以取一个可读性高一点的名字。 public interface IWordpress : IXmlRpcProxy
{
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
{
string NewPost(int blog_id, string username, string password, NewPostInput newPostInput);
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["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更加佩服了:lol)。
希望能对大家有帮助,为有这方面需要的朋友节约一点时间,附上源代码供大家动手试试:
忘记发图了。好像过一段时间主贴就不能编辑了。
你的意思是,使用C#编写软件,然后通过wp的api批量管理wp程序对吧
你的帖子是非常好的帖子
可惜的是,这里没多少人懂程序
但是我懂,我给你加分了
你是这样管理站群的?
我可以告诉你我怎么管理站群
编写一个中心程序,这个程序就像一个wp后台一样,所有的功能都有
所有发布的文章都在中心程序自己的独立数据库里面
而站群里面的每一个站点,不是wp程序,是自己写的网站程序
通过中心程序,配合多个虚拟主机的ftp,自动将子站点通过ftp上传,然后装载数据到子站点
这样站群里面一个站就出来了,其余的子站点一样的全部自动化
所有的文章在中心程序里面产生
希望你看明白了
月光飞燕 发表于 2013-6-17 12:46 static/image/common/back.gif
你是这样管理站群的?
我可以告诉你我怎么管理站群
谢谢moon light mm的分享,你的这个想法挺好的,感觉是个好东西。中心程序和网站程序都不和wp沾边吗?那comment等,wp这些动态交互的功能就没有了吧。
站点多了后,最好有个工具把这些活都包了或者管理好:数据每日备份,文章更新,网站搬家,网站监控(侦测突然死机不能访问什么的)
如果是vps,可以使用winscp加密拷贝文件,还有相关的库可以C# ssh控制主机
http://sshnet.codeplex.com/
http://www.libssh.org/
我以前做了几个垃圾站,程序都自己写,但数据都垃圾搞来的。追求页面的数量而不是质量,思维上和网赚的思维差距比较大,死得挺惨。正在努力学习你的教程,学完了准备重新出发搞一下。:P
技术帖啊,进来收藏,以后用,
月光飞燕 发表于 2013-6-17 12:46 static/image/common/back.gif
你是这样管理站群的?
我可以告诉你我怎么管理站群
通过中心程序,配合多个虚拟主机的ftp,自动将子站点通过ftp上传,然后装载数据到子站点这个不太懂 难道有个主数据库 添加内容都在主数据库里 当子站点需要调用不同的内容的时候访问主站点某类文章 还是 主数据库可以实现 实时COPY到子站点数据库
页:
[1]