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对应字段   含义 
date post_date_gmt  
date_modified post_modified_gmt  post的修改时间
slug post_name  
post_status post_status  post的状态, 可选draft、publish,常用publish就可以直接发布post了
title     post标题
content post_content  post 内容 
excerpt post_excerpt  摘要 
link    
comment_status    
ping_status    
terms    
terms_names    
custom_fields    
enclosure    
post_format    
thumbnail post_thumbnail  
sticky    置顶显示, 设置True
post_type    post的类型, 默认为post, 也可以为page,
parent_id post_parent  上级文章的id
menu_order    
guid    
mime_type post_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进行置顶显示。

wordpress学习五: 通过wordpress_xmlrpc的python包远程操作wordpress的更多相关文章

  1. python fabric远程操作和部署

    博客迁往:新地址(点击直达) 新博客使用markdown维护,线下有版本号库,自己写的所以会定时更新同步.同一时候提供更好的导航和阅读体验 csdn对markdown支持不好.所以旧版不会花时间进行同 ...

  2. 全面学习 Python 包:包的构建与分发

    首发于公众号:Python编程时光 1. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而 ...

  3. 常用统计分析python包开源学习代码 numpy pandas matplotlib

    常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis

  4. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

  5. Python包模块化调用方式详解

    Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...

  6. 小猪的Python学习之旅 —— 16.再尝Python数据分析:采集拉勾网数据分析Android就业行情...

    一句话概括本文: 爬取拉钩Android职位相关数据,利用numpy,pandas和matplotlib对招人公司 情况和招聘要求进行数据分析. 引言: 在写完上一篇<浅尝Python数据分析: ...

  7. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  8. 用python定时文章发布wordpress

    用python定时文章发布wordpress: 流程: 采集 - 筛选文章 - wordpress文章发布. wordpress文章发布代码:python利用模块xmlrpclib发布文章非常便捷,省 ...

  9. python包管理-distutils,setuptools,pip,virtualenv等介绍

    python包管理-distutils,setuptools,pip,virtualenv等介绍 对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方 ...

随机推荐

  1. linux禁止非法用户试探登录

    当我们的linux主机一旦暴露在互联网上,就会遭受到来自网络上的一些非法用户的骚扰.如弱口令扫描,试探性登录:这些行为对linux主机构成一定的威胁.那怎样防范此类的攻击了,这里写了一个脚本,功能就是 ...

  2. Centos7 Nginx 开机启动

    Centos 系统服务脚本目录: 用户(user) 用户登录后才能运行的程序,存在用户(user) /usr/lib/systemd/ 系统(system) 如需要开机没有登陆情况下就能运行的程序,存 ...

  3. pyspider中内容选择器常用方法汇总

    pyspider 的内容选择器默认已经实例化一个pyquery对象,可以直接使用pyquery的api来获取自己需要的内容. 1.在pyquery中使用response.doc就可以直接实例化一个py ...

  4. SQL实用札记【SQL Sever篇】

    目录 从表中去除重复行 逗号分隔字符串转数据表行 跨DB/Server执行SP[分布式事务] 在OpenQuery中执行带参数的SQL语句 从表中去除重复行数据 1. 如果有ID字段,就是具有唯一性的 ...

  5. dubbo和rabbitmq对比

    随着项目越来越大,局势就是项目拆分,大项目拆分成很多项目,各种技术也应允而生.从应用交互层面,按我的理解dubbo和rabbitmq就对比分析进行学习.dubbo和zookeeper结合  1.zoo ...

  6. JAVA框架 Spring AOP注解

    一.准备工作: 1)导入jar包: 4个jar包. 2)约束:(spring需要所有的约束)有IOC约束和AOP 还有事务(tx)以及注解注入的约束(context). <?xml versio ...

  7. CentOS中配置Kafka集群

    环境:三台虚拟机Host0,Host1,Host2 Host0:192.168.10.2 Host1:  192.168.10.3 Host2:  192.168.10.4 在三台虚拟机上配置zook ...

  8. Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案

    是这样的哈: 有这样一个需求: 1.显示一个界面,界面上有一个列表(ListView),列表上面有一个可以滚动的海报. 2.要求在ListView滚动的过程中,ListView上面的海报也可以跟着Li ...

  9. 2017-2018-2 20155229《网络对抗技术》Exp1:逆向及Bof基础实践

    逆向及Bof基础实践 实践基础知识 管道命令: 能够将一个命令的执行结果经过筛选,只保留需要的信息. cut:选取指定列. 按指定字符分隔:只显示第n 列的数据 cut -d '分隔符' -f n 选 ...

  10. Java通过pinyin4j实现汉字转拼音

       碰到个需求,需要按用户名字的首字母来排序.这就需要获取汉字对应的拼音了,突然就想起了pinyin4j这个jar包,于是就开始写了个汉字转拼音的工具类.在此记录一下,方便后续查阅 一.Pom依赖 ...