TechBox

業務で使えそうな技術を紹介します。

pythonからWordPressに投稿&画像のアップロード

環境

  • python3

準備

pipでインストール

pip install python-wordpress-xmlrpc

ソース

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

wpSiteXMLRPC = 'http://サイト名/xmlrpc.php'
loginId = '***'
password = '***'


post = WordPressPost()

# タイトル
post.title = title

# 投稿内容
post.content = body
 
# タグ、カテゴリ
post.terms_names = {
'post_tag': ***,
'category': ***
}
 
# 投稿URL(スラッグ)
post.slug = ***
 

#画像のアップロード
with open(imgPath, 'rb') as f:
    binary = f.read()
data = {
    "name": imgPath.replace("tmp/",""),
    "type": 'image/jpeg',
    "overwrite": True,
    "bits": binary
}    
media_id = wp.call(media.UploadFile(data))['id']

# 画像アイキャッチの指定
post.thumbnail = media_id

#投稿時間
#※よくわからんが、タイムゾーンが違うらしい。-9時間するとちょうど今の時間になるらしい
post.date = datetime.datetime.now() - datetime.timedelta(hours=9)

#カスタムフィールド
customFields = []
customFields.append({
    'key': 'aaa',
    'value': '***'
})
customFields.append({
    'key': 'bbb',
    'value': '***'
})

post.custom_fields = customFields


# 投稿する
# 公開済にする。
post.post_status = 'publish'

# 下書き指定の場合
# post.post_status = 'draft'

wp.call(NewPost(post))

以上です。