投稿済み記事のタイトルを変更する
Python と WP REST API を使って、すでに投稿済みの記事を取得し、タイトルを変更し、再投稿してみたいと思います。
変更する記事はこれで、タイトルに "Before" という文字列が入っているので、これを "After" にして、再投稿してみます。
変更対象の記事の自動取得
まずは、GET API を使い、変更する記事を取得します。これは以前お伝えした方法を応用して、実装します。

Handbook の "List Posts" のところも参考にしながら、実装します。
REST API Handbook List Posts
実装コードの前半部分です。これで、 検索文字列 を使って、変更対象の記事を取得します。
Python code
import requests
from urllib.parse import urljoin
def wp_get_posts_search(search_word):
url_base = 'https://kamiki.blog/'
url = urljoin(url_base, 'wp-json/wp/v2/posts/')
user = 'xxx' # ユーザー名
password = 'xxx' # アプリケーションパスワードで発行したパスワード
params = {
'status': 'private, publish, draft',
'search': search_word,
}
res = requests.get(
url,
params=params,
auth=(user, password),
)
print(res)
data_list = res.json()
return data_list
タイトルを変更して、記事を更新する
REST API Handbook の "Update a Post" の欄を参考にして、実装します。
REST API Handbook Update a Post
すでに投稿済み記事を更新する場合は、POST するときの URL に記事 ID を加えると書かれています。 https://example.com/wp-json/wp/v2/posts/<id> という感じです。
実装コードの後半部分です。タイトルの Before を After に変更して、更新します。
Python code
def wp_update_post(unique_id, changed_title):
url_base = 'https://kamiki.blog/'
url = urljoin(url_base, 'wp-json/wp/v2/posts/' + str(unique_id))
user = 'xxx' # ユーザー名
password = 'xxx' # アプリケーションパスワードで発行したパスワード
params = {
'title': changed_title,
}
res = requests.post(
url,
params=params,
auth=(user, password),
)
print(res)
return
if __name__ == '__main__':
search_word = '[Before]'
data_list = wp_get_posts_search(search_word)
if len(data_list) == 1:
unique_id = data_list[0]['id']
original_title = data_list[0]['title']['rendered']
# タイトルを変更する
changed_title = original_title.replace('Before', 'After')
wp_update_post(unique_id, changed_title)
結果
上記コードを実行すると、以下のように変更できています。