Pythonとpython-wordpress-xmlrpcでターミナルからWordPressを更新する

Pythonを使ってWordPressを更新したいなーと思って調べてみると、「python-wordpress-xmlrpc」というライブラリがありました。python-wordpress-xmlrpcを使うと、XML-RPCを経由して、ターミナルからWordPressの更新ができるようになります。

Welcome to python-wordpress-xmlrpc’s documentation! — python-wordpress-xmlrpc 2.3 documentation

ちなみにこの投稿は普通にWordPressのダッシュボードから手打ちで書いてます。

python-wordpress-xmlrpcのインストール

まずは「python-wordpress-xmlrpc」をインストールします。例によってpipを使います。

pip install python-wordpress-xmlrpc

Admin権限がないユーザの場合は、以下のコマンドです。

sudo pip install python-wordpress-xmlrpc

Successfully installed python-wordpress-xmlrpc-2.3”というような感じのコメントが表示されれば、python-wordpress-xmlrpcのインストールはこれで完了です。

python-wordpress-xmlrpcを使ってみるテスト

「python-wordpress-xmlrpc」のチュートリアルっぽいものに従って、ターミナルからWordPressを更新してみます。まずはターミナルに“python”と打ち、Pythonの対話モードに入ります。

おまじないを唱えます。

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

Clientクラスのインスタンスを生成します。“mysite.wordpress.com”の部分は自分のWordPressのURL、“username”および“password”は自分のWordPressのユーザ情報を入れます。

wp = Client('http://mysite.wordpress.com/xmlrpc.php', 'username', 'password')

GetPosts()メソッドを使うと、記事の一覧を取得できます。1回のリクエストで何件くらいのデータが取得できるのでしょうか?

wp.call(GetPosts())
# [<WordPressPost: My new title>, <WordPressPost: Hello world!>]

GetUserInfo()メソッドを使うと、ユーザの一覧を取得できます。

wp.call(GetUserInfo())
# <WordPressUser: hoge>

python-wordpress-xmlrpcを使って記事を投稿してみるテスト

チュートリアルに従って適当なエントリーを投稿してみます。カテゴリーやスラッグ、投稿日時も指定できるようですが、とりあえず投稿するところまでやってみます。

post = WordPressPost()
post.title = 'こんにちは'
post.content = 'やるき!げんき!いわき!'
wp.call(NewPost(post))

見てのとおり、“post.title”でエントリーのタイトルを、“post.content”でエントリーの中身を記述しています。日本語も普通に使えました。

“wp.call(NewPost(post))”の部分は、Clientクラスのインスタンスに新規記事の投稿として先ほど作った“post”オブジェクトを渡していますね。うまく投稿されると、記事IDの番号が返ってくるっぽいです。

投稿された様子を「記事の編集」画面で確認します。

python-wordpress-xmlrpc

タイトルとコンテンツの部分は、きちんと自分で書いたとおりに投稿されています。カテゴリーやスラッグなどはデフォルト設定のものになっているようですね。

とりあえず、python-wordpress-xmlrpcを使うとターミナルから簡単にWordPressが更新できることがわかりました。

シェアしてもらえるとうれしいです。゚(´っωc`)゚。