EEfaq论坛-赚客自留地

 找回密码
 免费注册
查看: 1831|回复: 6

wordpress api快速入门

  [复制链接]
发表于 2013-6-17 02:39:06 | 显示全部楼层 |阅读模式
本帖最后由 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,如下图:
ref-xmlrpc.JPG

如何新建Post?
查看wordpress的文档,找到newPost操作需要传入的参数
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.newPost

newpost.JPG
其中,blog_id, username, password是每次调用api都需要传入的身份信息。如果不是mu版本,blog_id使用0。struct content部分是针对每个操作的具体的参数。不过不是每个参数都必须要传入。

定义api调用接口
调用我们使用的xmlrpc类库,需要建立一个从IXmlRpcProxy继承来的interface,我们这里取名叫IWordpress,然后把调用的每个api操作的method写出来,因为此类库使用了反射,所以参数的名字必须要和文档里面一样。api的名字使用属性标识,例如:[XmlRpcMethod("wp.newPost")],这样你interface里面的方法名称可以取一个可读性高一点的名字。
  1. public interface IWordpress : IXmlRpcProxy
  2. {
  3.     [XmlRpcMethod("wp.newPost")]
  4.     string NewPost(int blog_id, string username, string password, NewPostInput newPostInput);
  5. }
复制代码
建立一个方法方便程序里面调用
  1. public static string NewPost(string url, string username, string password, string title, string content)
  2. {
  3.     IWordpress proxy = (IWordpress)XmlRpcProxyGen.Create(typeof(IWordpress));
  4.     proxy.Url = url;
  5.     NewPostInput postInput;
  6.     postInput.post_title = title;
  7.     postInput.post_content = content;
  8.     postInput.post_status = "publish";

  9.     string postId = proxy.NewPost(0, username, password, postInput);
  10.     return postId;
  11. }
复制代码
这里我们首先通过XmlRpcProxyGen.Create创建了一个刚才IWordpress接口的对象,然后指定wordpress url和传入参数。
其中,作为Post内容的参数是个复合类型,所以我建立了一个struct来表示:
  1. public struct NewPostInput
  2. {
  3.     public string post_title;
  4.     public string post_content;
  5.     public string post_status;
  6. }
复制代码
文档里面的很多参数是可选的,所以作为例子,这里只有3个主要参数。注意,参数的名字要和文档里面的一样。

如何获取Post列表?
同NewPost一样,先查看文档,然后把api的定义写到IWordpress里面:
  1. public interface IWordpress : IXmlRpcProxy
  2. {
  3.     [XmlRpcMethod("wp.newPost")]
  4.     string NewPost(int blog_id, string username, string password, NewPostInput newPostInput);

  5.     [XmlRpcMethod("wp.getPosts")]
  6.     XmlRpcStruct[] GetPosts(int blog_id, string username, string password);
  7. }
复制代码
接下来,建立一个方便用户调用的方法,GetPosts:
  1. public static XmlRpcStruct[] GetPosts(string url, string username, string password)
  2. {
  3.     IWordpress wordpress = (IWordpress)XmlRpcProxyGen.Create(typeof(IWordpress));
  4.     wordpress.Url = url;
  5.     XmlRpcStruct[] ret = wordpress.GetPosts(0, username, password);
  6.     return ret;
  7. }
复制代码
这里返回的是XmlRpcStruct数组。XmlRpcStruct是可以通过字符串索引内容的,比如:ret[0]["post_title"],可以查询的字段名称在文档的return values里面有说明:
http://codex.wordpress.org/XML-RPC_WordPress_API/Posts#wp.getPost

getposts.JPG

调用wordpress api的url是什么?
wordpress的安装目录下面有个xmlrpc.php,调用的url就是这个文件的web地址,比如:
http://www.example.com/xmlrpc.php

很少写东西,一动手才感觉简单的东西,自己虽然知道,但是表达出来挺别扭。(由己知彼,对写出一大堆教程的moon light更加佩服了)。
希望能对大家有帮助,为有这方面需要的朋友节约一点时间,附上源代码供大家动手试试:
WordpressExample.rar (50.22 KB, 下载次数: 7)

评分

参与人数 1e币 +20 收起 理由
月光飞燕 + 20 谢谢分享!

查看全部评分

 楼主| 发表于 2013-6-17 04:36:28 | 显示全部楼层
忘记发图了。好像过一段时间主贴就不能编辑了。
wp-example.png
WordpressExample.rar (50.22 KB, 下载次数: 2)
回复 支持 反对

使用道具 举报

发表于 2013-6-17 12:43:08 | 显示全部楼层
你的意思是,使用C#编写软件,然后通过wp的api批量管理wp程序对吧

你的帖子是非常好的帖子

可惜的是,这里没多少人懂程序

但是我懂,我给你加分了
回复 支持 反对

使用道具 举报

发表于 2013-6-17 12:46:49 | 显示全部楼层
你是这样管理站群的?

我可以告诉你我怎么管理站群


编写一个中心程序,这个程序就像一个wp后台一样,所有的功能都有

所有发布的文章都在中心程序自己的独立数据库里面

而站群里面的每一个站点,不是wp程序,是自己写的网站程序

通过中心程序,配合多个虚拟主机的ftp,自动将子站点通过ftp上传,然后装载数据到子站点

这样站群里面一个站就出来了,其余的子站点一样的全部自动化

所有的文章在中心程序里面产生

希望你看明白了

点评

这个不太懂 难道有个主数据库 添加内容都在主数据库里 当子站点需要调用不同的内容的时候访问主站点某类文章 还是 主数据库可以实现 实时COPY到子站点数据库  详情 回复 发表于 2013-6-21 20:45
谢谢moon light mm的分享,你的这个想法挺好的,感觉是个好东西。中心程序和网站程序都不和wp沾边吗?那comment等,wp这些动态交互的功能就没有了吧。 站点多了后,最好有个工具把这些活都包了或者管理好:数据每日  详情 回复 发表于 2013-6-17 13:36
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-17 13:36:26 | 显示全部楼层

谢谢moon light mm的分享,你的这个想法挺好的,感觉是个好东西。中心程序和网站程序都不和wp沾边吗?那comment等,wp这些动态交互的功能就没有了吧。
站点多了后,最好有个工具把这些活都包了或者管理好:数据每日备份,文章更新,网站搬家,网站监控(侦测突然死机不能访问什么的)

如果是vps,可以使用winscp加密拷贝文件,还有相关的库可以C# ssh控制主机
http://sshnet.codeplex.com/
http://www.libssh.org/

我以前做了几个垃圾站,程序都自己写,但数据都垃圾搞来的。追求页面的数量而不是质量,思维上和网赚的思维差距比较大,死得挺惨。正在努力学习你的教程,学完了准备重新出发搞一下。

回复 支持 反对

使用道具 举报

发表于 2013-6-18 23:06:54 | 显示全部楼层
技术帖啊,进来收藏,以后用,
回复 支持 反对

使用道具 举报

发表于 2013-6-21 20:45:07 | 显示全部楼层
月光飞燕 发表于 2013-6-17 12:46
你是这样管理站群的?

我可以告诉你我怎么管理站群
通过中心程序,配合多个虚拟主机的ftp,自动将子站点通过ftp上传,然后装载数据到子站点
这个不太懂 难道有个主数据库 添加内容都在主数据库里 当子站点需要调用不同的内容的时候访问主站点某类文章 还是 主数据库可以实现 实时COPY到子站点数据库

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|联系我们|Archiver|手机版|小黑屋|EEfaq论坛

GMT+8, 2024-11-21 18:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表