python-wordpress-xmlrpc:ワードプレスへ記事投稿
PythonでFTPサーバーに設置したワードプレスの操作方法です。
python-wordpress-xmlrpc公式サイト
Clientメソッド
[code lang=”python”]
from wordpress_xmlrpc import Client
wp = Client(‘WordPress設置URL/xmlrpc.php’,’ユーザー名’,’パスワード’)
#操作の前提としてClientクラスのインスタンスを生成します。
#当記事では上記を下記のとおり省略して記載します
wp = Client(…)
[/code]
NewPostメソッド(記事の新規投稿)
[code lang=”python”]
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
wp = Client(…)
post = WordPressPost()
post.title = "記事タイトル"
post.content = "記事本文"
post.terms_names = {
‘category’: ["カテゴリー名1","カテゴリー名2"]
‘post_tags’:["タグ名1","タグ名2"]
}
post.post_status = ‘publish’
post.thumbnail = 1
wp.call(NewPost(post))
[/code]
WordPressPostクラスのオブジェクトによって、記事の設定を行います。以下はよく使うものです。
title | 記事タイトル |
---|---|
content | 記事本文 |
excerpt | 記事一覧ページでの抜粋文 |
post_status | 公開状態 参考 |
comment_status | コメント状態 open or close |
terms_names | タクソノミーを辞書型で設定 |
thumbnail | サムネイル画像をイメージIDで設定 |
slug | スラッグ |
GetPostsメソッド(記事一覧の取得)
戻り値:WordPressPostインスタンスのリスト
[code lang=”python”]
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods.posts import GetPosts
wp = Client(…)
result = wp.call(posts.GetPosts())
#全記事のタイトルを出力
for post in result:
print(post)
#全記事のIDを出力、Pythonの原則通りインスタンスのアトリビュート(プロパティ)にアクセス
for post in result:
print(post.id)
#辞書型により抽出条件の設定
result = wp.call(posts.GetPosts({‘post_status’:’private’}))
for post in result:
print(post)
[/code]
WordPressPostインスタンスの持つアトリビュートについては公式を参照
GetPosメソッド(記事の取得)
戻り値:WordPressPostインスタンス
[code lang=”python”]
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPost
from wordpress_xmlrpc.methods import posts
wp = Client(…)
result = wp.call(posts.GetPost(記事ID))
#ここではWordPressPostインスタンスの持つアトリビュートと、その値を取得してみます
attribute_list = dir(result) #dir関数により、全アトリビュートを取得
end = len(attribute_list) #アトリビュート数を取得
for a in range(27,end): #26番目まではワードプレスとは無関係なので除外
print(attribute_list[a]) #アトリビュート名を取得
print(getattr(result,attribute_list[a])) #getattr関数により各アトリビュートの値を取得
[/code]
後で調べましたが__dict__メソッドで簡単に全アトリビュートを取得できるようです。
[code lang=”python”]
[/code]
[code lang=”python”]
[/code]
ユーザー名の取得
[code lang=”python”]
result = wp.call(GetUserInfo())
print(result)
[/code]
[code lang=”python”]
[/code]
EditPostメソッド(投稿済記事の編集)
下記では例として、投稿済記事の公開状態の変更を行います。
[code lang=”python”]
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import posts
wp = Client(…)
post.post_status = ‘private’
wp.call(posts.EditPost(記事ID, post))
#ただしこのままでは記事タイトルが消され、nontitleになってしまします。(バグ?)
#よって一度記事タイトルを取得し、記事タイトルと共に編集内容を代入します
post_id = 記事ID
result = wp.call(posts.GetPost(post_id))
post = WordPressPost()
post.title = result.title #記事タイトル
post.post_status = "publish" #公開状態
wp.call(posts.EditPost(post_id, post))
[/code]
[code lang=”python”]
[/code]
[code lang=”python”]
[/code]
[code lang=”python”]
[/code]
[code lang=”python”]
[/code]
[code lang=”python”]
[/code]
参考