ワードプレスのWP REST APIを使って記事を自動で投稿したり、更新したりしてみる回。
今回はPythonを使ってPostリクエストを投げてみる。
記事一覧を取得してみた回はこちら、
実験環境(バージョン情報)
Python: 3.8.7
WordPress: 6.0
WordPressのアプリケーションパスワードの準備
RESTAPIを使って記事の投稿とか更新は他の人が勝手に実行されないようにパスワードが必要になる。
ワードプレスのアプリケーションパスワードを設定してそれを使う。ので、さっそく設定。
「新しいアプリケーションパスワード名」に適当な名前を入力して、
「新しいアプリケーションパスワードを追加」をクリック
作成されたパスワード(赤枠部分)をプログラム内で使う
Pythonで記事の自動投稿プログラム
「ブログのURL/wp-json/wp/v2/posts」という感じのURLをPOSTするとあたらしい記事が投稿される。
POSTのパラメータに記事の情報や認証情報を渡す。
import requests
# ブログのURL
blog_url = 'https://xxxxxxxxxxxxx'
# WordPressのユーザー名
api_user = 'ユーザー名をここに入力'
# アプリケーションパスワード
api_password = 'アプリケーションパスワードをここに入力'
# 送信する記事データ
post_data = {
'title': '記事投稿テスト',
'content': '<h2>テストやねん</h2><p>これは、<br>Pythonからの記事投稿の<br>テストです。</p>',
'slug': 'python-post-test',
'status': 'draft', # draft=下書き、publish=公開 省略時はdraftになる
}
# Post APIのURL
post_api_url = f'{blog_url}/wp-json/wp/v2/posts'
# 記事投稿リクエスト
response = requests.post(post_api_url, json=post_data, auth=(api_user, api_password))
# レスポンスがどんな感じか表示
res_json = response.json()
print(res_json)
実行する環境に合わせて以下の変数を変更して実行してください。
blog_url :記事を投稿したいブログのURL
api_user :ログインしているワードプレスのユーザー名
api_password:作成したアプリケーションパスワード
記事のデータとして指定するキーはこちらのPosts API リファレンスのスキーマを参照してください。
カテゴリーとかタグを指定したいときはそれぞれのIDをカンマ区切りで指定する感じ
‘category’: 1,2,3
‘tags’: 10,11,12
プログラムを実行するとこんな記事が作成された。
Pythonで記事を更新するプログラムを作成
「ブログのURL/wp-json/wp/v2/posts/記事ID」という感じのURLをPOSTすると該当の記事が更新される。
POSTのパラメータに記事の情報や認証情報を渡す。
import requests
# ブログのURL
blog_url = 'https://xxxxxxxxxxxxx'
# WordPressのユーザー名
api_user = 'ユーザー名をここに入力'
# アプリケーションパスワード
api_password = 'アプリケーションパスワードをここに入力'
# 更新する記事ID
post_id = 160
# 送信する記事データ
post_data = {
'title': '記事投稿テスト+更新テスト',
'content': '<h2>テストやねん</h2><p>これは、<br>Pythonからの記事投稿の<br>テストです。</p><p><strong>更新したよ!!</strong></p>',
'slug': 'python-post-test-update',
'status': 'draft', # draft=下書き、publish=公開 省略時はdraftになる
}
# Post APIのURL
post_api_url = f'{blog_url}/wp-json/wp/v2/posts/{post_id}'
# 記事更新リクエスト
response = requests.post(post_api_url, json=post_data, auth=(api_user, api_password))
# レスポンスがどんな感じか表示
res_json = response.json()
print(res_json)
実行する環境に合わせて以下の変数を変更して実行してください。
blog_url :記事を投稿したいブログのURL
api_user :ログインしているワードプレスのユーザー名
api_password:作成したアプリケーションパスワード
post_id :更新した記事のID
プログラムを実行するとこんな感じになった。
まとめ
これでいろいろはかどるはず。
メディアファイル(画像、動画)のアップロードもためしてみました。
コメント