Word PressのAPIを用いて新規投稿を作成する方法について説明します。
あわせて、Pythonで新規投稿を行うプログラムも紹介します。
Contents
リクエストURL
[ブログのアドレス]/wp-json/wp/v2/posts
ここでブログのアドレスとは、WordPressを用いたブログのトップページです。
このブログであれば、”http://mojitoba.com/wp-json/wp/v2/posts”がリクエストURLになります。
パラメーター
date
投稿日時を指定します。
フォーマットはyyyy-MM-ddThh:mm:ssで、例えば2019/01/21の19:00:00に投稿日時を設定する場合は2019-01-21T19:00:00とします。
指定しない場合委はリクエストを行った時間が自動で設定されます。
date_gmt
dateを世界標準時に直したものを指定します。
フォーマットはdateと同じで、指定しない場合はリクエストをした時間から自動的に設定されます。
password
記事ステータスをprivateにしたとき、この記事を見るのに必要なパスワードです。
slug
いわゆるパーマリンクです。
Word Pressのパーマリンク設定欄に入力するものと同じものを指定します。
この記事であれば、wp_rest_api_postsがslugになります。
指定しない場合は記事タイトルから自動で設定されます。
status
記事のステータスを設定します。
publish(公開), future(公開予約), draft(下書き), pending(非公開), private(限定公開)から一つを選択します。
title
記事タイトルを指定します。
content
記事本文を指定します。
記事を公開するユーザーを指定します。
ユーザー名ではなく、ユーザーを表すIDを指定することに注意してください。
指定しない場合は、自動的にid=1がセットされます。
id=1のユーザーは、Word Pressの初期設定を行ったユーザーです。
excerpt
記事の引用時に表示されるテキストを指定します。
featured_media
アイキャッチ画像のIDを指定します。
画像のIDはメディアの「詳細な編集」のURLから確認できます。
関連:【WP REST API解説】画像IDの調べ方(featured_media)
comment_status
コメントを受け付けるかどうかを指定します。
open(受け付ける)、closed(受け付けない)のうちどちらかを指定します。
指定しない場合、ブログの設定が優先されます。
ping_status
トラックバックを受け付けるかどうかを指定します。
open(受け付ける)、closed(受け付けない)のうちどちらかを指定します。
format
記事のフォーマットを指定します。
指定しない場合はstandardになります。
次のうちいずれか: standard, aside, chat, gallery, link, image, quote, status, video, audio
sticky
公開状態の「この投稿を先頭に固定表示」にあたるパラメータです。
True, Falseのbool値を指定します。
categories
記事のカテゴリーをIDで設定します。
slugではないことに注意してください。
また、IDのセットを引数として渡すことにも注意が必要です。
以下で具体例を挙げているため、確認してください。
指定しない場合、未設定が適用されます。
記事のタグを指定します。
Pythonによる実装
Pythonによる投稿リクエストの例をご紹介します。
投稿するためには、API用のパスワードが必要になります。
まだ取得していない場合はこちらの記事で解説していますので、サクッと発行しましょう!
参考:【WP REST API】Word Press APIのパスワード設定方法
例では以下のような記事を投稿してみます。
タイトル:テスト
記事内容:この記事はテスト用投稿です。
カテゴリー:1と2
公開状態:公開
コメント:受け付けない
また、投稿に必要な情報は以下のようにします。
こちらの情報は、自分のブログの情報に書き換えてください。
ブログのURL: mojitoba.com
ユーザー: hogehoge
パスワード: xxxx xxxx xxxx xxxx xxxx xxxx
### 投稿に必要な情報 ### # ユーザーID user_id = "hogehoge" # APIパスワード passward = 'xxxx xxxx xxxx xxxx xxxx xxxx' # リクエストURL end_point_url ="http://mojitoba.com/wp-json/wp/v2/posts" ### パラメータ ### # タイトルを指定 title = 'テスト' # 本文を指定 content = 'この記事はテスト用投稿です。' # 公開状態を指定 status = 'publish' # コメントの状態を指定 comment_status = 'closed' # パラメータをまとめる payload = { 'title': title , 'content' : content , 'status' : status, 'categories' : [1,2], 'comment_status': 'closed' } # 投稿 headers = {'content-type': "Application/json"} r = requests.post( end_point_url, data=json.dumps(payload) , headers=headers, auth=(user_id, passward) ) # 確認 print(r.status_code) # 201が表示されれば成功