Python使用xmlrpc操作WordPress:发布文章、新建标签和分类目录等

作者 : 小优 本文共2562个字,预计阅读时间需要7分钟 发布时间: 2022-06-23 共25人阅读
python-wordpress-xmlrpc 功能可以让我们远程自动发布文章,另外常见的操作如保存草稿、指定分类目录、指定标签、指定作者、新建标签和分类目录都可以通过 xmlrpc 实现。今天小优就分享下 Python 如何使用 xmlrpc 操作 WordPress。

一、安装依赖

Python 调用 WordPress xmlrpc 需要的模块是 python_wordpress_xmlrpc,直接通过 pip 安装即可(老王这里用的是 python3):

pip3 install python_wordpress_xmlrpc

之后结合 Python 代码可以实现 WordPress 自动发布文章的功能。

二、源码分享

1、发布文章

其中 post_status 可以是草稿、发布和私密,Client 类需要传入你的 xmlrpc.php 地址,以及用户名和密码,可以指定文章的分类目录和标签,但是如果分类目录和标签不存在是会报错的,可以新新建。最后成功发布后会返回文章的 id:

def newPostArticle(title, content):
  post = WordPressPost()
  post.title = title
  post.content = content
  post.post_status = 'draft' # 文章状态,不写默认是草稿,private表示私密的,draft表示草稿,publish表示发布
  post.terms_names = {
  'category': ['分类目录'],
  'post_tag': ['标签1', '标签2'],
  }
  post.id = wp.call(NewPost(post))
  return post.id

2、新建标签和分类目录

代码如下,跟发布文章类似,也是新建 Client,调用 call 方法:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from wordpress_xmlrpc import Client, WordPressPost,WordPressTerm
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods.taxonomies import NewTerm,GetTerm

import sys,os
# reload(sys)
# sys.setdefaultencoding('utf8')

#登录
wp = Client('http://您的域名/xmlrpc.php', '后台账号', '后台密码')

def newPostArticle(title, content):
  post = WordPressPost()
  post.title = title
  post.content = content
  post.post_status = 'draft' # 文章状态,不写默认是草稿,private表示私密的,draft表示草稿,publish表示发布
  post.terms_names = {
  'category': ['分类目录'],
  'post_tag': ['标签1', '标签2'],
  }
  post.id = wp.call(NewPost(post))
  return post.id

# 新建标签
def addTags():
  tag = WordPressTerm()
  tag.taxonomy = 'post_tag'
  tag.name = 'My New Tag12'#标签名称
  tag.slug = 'bieming12'#标签别名,可以忽略
  tag.id = wp.call(NewTerm(tag))#返回的id
  return tag.id

# 新建分类
def addCategory():
  cat = WordPressTerm()
  cat.taxonomy = 'category'
  cat.name = 'cat1'#分类名称
  cat.slug = 'bieming2'#分类别名,可以忽略
  cat.id = wp.call(NewTerm(cat))#新建分类返回的id
  return cat.id

# 新建子分类
def addSubCategory(catId):
  parent_cat = wp.call(GetTerm('category', catId))#20是父分类的id
  child_cat = WordPressTerm()
  child_cat.taxonomy = 'category'
  child_cat.parent = parent_cat.id
  child_cat.name = 'My Child Category'#分类名称
  child_cat.slug = 'beidongdui'#分类别名,可以忽略
  child_cat.id = wp.call(NewTerm(child_cat))#新建分类返回的id
  return child_cat.id

#获取最新发布的10条信息标题:使用for循环打印
def getPosts():
  wp.call(GetPosts())
  for title in wp.call(GetPosts()):
      print(title)

#获取用户信息
def userInfo():
  print(wp.call(GetUserInfo()))

 

注意:

wordpress开启xmlrpc模块存在一定安全隐患,如暴力破解、SSRF,参考https://blog.csdn.net/u012206617/article/details/109002948

(https://github.com/FireFart/WordpressPingbackPortScanner)

开启xmlrpx模块,可能被恶意Ddos导致内存使用增高,影响站点使用,解决:

1.屏蔽 XML-RPC (pingback) 的功能,add_filter(‘xmlrpc_enabled’, ‘__return_false’);

2.通过.htaccess屏蔽xmlrpc.php文件的访问;

3.修改.htaccess文件,如果有用户访问xmlrpc.php文件,让其跳转到其他不存在的页面,降低自身网站的负担。

4.修改xmlrpx文件名;

修改文件名可保证该功能的使用,又避免了以上问题,除非又被人扫描到了。。。

资源下载说明

请使用百度网盘下载资源,请不要在线解压!

1.人民币与U币汇率为1比10,即1元=10U币.有任何疑问请联系客服处理!
2.请记住本站永久网址发布页:http://uuscw.com
3.本站资源大多存储在云盘,如发现链接失效请在下方评论留言,作者看到后会第一时间更新补链。
4.关于解压密码错误或者资源损坏,请查看解压教程:[必看]关于资源教程及常见问题
5.本站大部分资源解压密码均为: uuscw.com 如密码有误,请查看原帖的资源说明!

免责申明:
1.如果服务器暂不能下载请稍后重试!总是不能下载,请联系客服,谢谢合作!
2.本站所有资源(包括写真、模板、素材、软件、字体等)仅供学习与参考,请勿用于商业用途。
3.本站所有素材来源于用户上传和网络,如有侵权请请联系客服处理!
4.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
UU素材网 » Python使用xmlrpc操作WordPress:发布文章、新建标签和分类目录等

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们。

发表评论