Logo

wordpress学习五: 通过wordpress_xmlrpc的python包远程操作wordpress

photo

2020年09月08日

wordpress提供了丰富的xmlrpc接口api来供我们远程操控wp的内容。伟大的开源社区有人就将这些api做了一下封装,提供了一个功能比较完整的python库,库的使用文档地址http://python-wordpress-xmlrpc.readthedocs.org/  , 文档内容还是很全面的。这里我将自己试验的一些内容做一下总结。

wordpress有一个revision的机制,导致我们在通过api接口更新文档时,会在数据库中保存2条记录,一条是正文,另外一条 id-revision之类的记录,对我来说没什么用,所以先通过代码禁用掉。

define('WP_POST_REVISIONS', false);

在这个python类库中,WordPressPost对象的属性通过setattr来实现的。

查询Post

利用api可以获取指定的post的相关信息,具体有哪些信息可以参看下面新增post的那个表。一个简单的获取post列表的代码例子如下:

def TestGetPost():
    wp = wp_server.call(wordpress_xmlrpc.methods.posts.GetPosts())
    for w in wp:
        print w.title
        print w.post_status

此外,GetPosts函数接受不同的参数来进行条件查询, 例如下面的的语句返回最近更新的100个post

recently_modified = client.call(posts.GetPosts({'orderby': 'post_modified', 'number': 100}))

下面的代码是返回从offset开始的指定条数的post条目:

posts = client.call(posts.GetPosts({'number': increment, 'offset': offset}))

新建Post

新建的post公国wordpress_xmlrpc.methods.posts.NewPost(WordPressPost)来创建,以下是一个简短的新建一个Post的代码段。

    post = WordPressPost()
    post.title = "test4"
    post.date_modified = datetime.datetime.now()
    post.content = "全英文界面,但有非官方的中文翻译。推荐直接阅读英语原文,既准确可靠又可提高英语水平。做题方式模拟正式比赛,采用标准测评机、文件输入输出、直接提交程序源文件的测评方式。"
    post.excerpt = "全英文界面,但有非官方的中文翻译"
    post.post_status = "publish"
    print wp_server.call( wordpress_xmlrpc.methods.posts.NewPost(post))

插入时支持的参数有:

 python中字段 xmlrpc对应字段含义 
datepost_date_gmt 
date_modifiedpost_modified_gmt post的修改时间
slugpost_name 
post_statuspost_status post的状态, 可选draft、publish,常用publish就可以直接发布post了
title   post标题
contentpost_content post 内容 
excerptpost_excerpt 摘要 
link  
comment_status  
ping_status  
terms  
terms_names  
custom_fields  
enclosure  
post_format  
thumbnailpost_thumbnail 
sticky  置顶显示, 设置True
post_type  post的类型, 默认为post, 也可以为page,
parent_idpost_parent 上级文章的id
menu_order  
guid  
mime_typepost_mime_type 

设置post的category和tag, Post的terms属性对应 WordPressTerm 对象。如果要新增一个term,可以用下面的代码来进行

post = WordPressPost()
post.title = 'Post with new tags'
post.content = '...'
post.terms_names = {
        'post_tag': ['tagA', 'another tag'],
        'category': ['My Child Category'],
}
post.id = client.call(posts.NewPost(post))

 

编辑Post

编辑已经发布的Post,和新建基本上一样, 还是依赖于WordPressPost结构类

def TestModifyPost():
    wp = wp_server.call(wordpress_xmlrpc.methods.posts.GetPost(1))
    wp.sticky = True
    print wp_server.call(wordpress_xmlrpc.methods.posts.EditPost(wp.id, wp))

上面的代码将postid是1的post进行置顶显示。 

 

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!

热门文章

无法握住的故土 在我们心灵最温暖的角落,总有一寸土地是属于故乡的。虽然我们看似已远离故土,可骨子里对故乡的依恋却是从未冷却过。我们无论漂泊他乡,还是在繁华都市平步青云,可故乡的悠悠情思总会潜入梦乡与你缠绵。是儿时那一缕缕茉莉的清香萦绕在梦境,也是邻家那已锈迹斑斑的铁壶里,开出艳丽的花儿在梦的边缘摇曳。故土就这样根深蒂固地在我们的灵魂深处烙下深深的印记。 作者:Pastore Antonio
1596 浏览量
EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1585 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1579 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1573 浏览量
windows 下安装 memcahce 官网上并未提供Memcached的Windows平台安装包,我们可以使用以下链接来下载,你需...windows下安装memcahce 作者:Pastore Antonio
1566 浏览量