WordPressへ固定ページを自動投稿する
WP REST API を使って、記事を自動投稿するのって楽ですよね。
アプリケーションパスワードさえあれば、WordPressのダッシュボードを開かなくていいし。
クラシックエディタで記事を編集しなくていいし。
記事の自動投稿は ここ で取り上げたので、今回は、固定ページの自動投稿をしてみたいと思います。
参考にするサイトは、REST API Handbook | Create a Page です。
こちらが実装コードです。記事の自動投稿のPOST時のURLを /wp/v2/posts/ から
/wp/v2/pages/ に変えただけです。
Python
import requests
from urllib.parse import urljoin
from datetime import datetime
def auto_create_page():
url_base = 'https://kamiki.blog/'
url = urljoin(url_base, 'wp-json/wp/v2/pages/')
user = 'xxx' # ユーザー名
password = 'xxx' # アプリケーションパスワード
content = '固定ページの自動投稿テストです。'
post = {
'title': 'WordPress固定ページ自動投稿テスト',
'status': 'draft', # draft(下書き), publish(公開)
'slug': 'wordpress-auto-create-a-page', # パーマリンク
'date': datetime.now().isoformat(),
'content': content,
}
res = requests.post(
url,
json=post,
auth=(user, password),
)
return
if __name__ == '__main__':
auto_create_page()
コードを実行すると、以下のような固定ページがWordPress上にできています。
投稿済みの固定ページを検索する
次は、変更対象の固定ページの検索方法です。上で自動投稿した固定ページを探します。
参考にするサイトは、REST API Handbook | List Pages です。
実装コードです。タイトルを検索ワードにして、GETするだけです。
コード上でGET後のレスポンスから固定ページのIDなどをprint出力しているので、コマンドラインに以下のように出力されます。
len(data) : 1
id : 768
slug : wordpress-auto-create-a-page
id : 768
slug : wordpress-auto-create-a-page
Python
import requests
from urllib.parse import urljoin
def search_a_page():
url_base = 'https://kamiki.blog/'
url = urljoin(url_base, 'wp-json/wp/v2/pages/')
user = 'xxx' # ユーザー名
password = 'xxx' # アプリケーションパスワード
params = {
'search': 'WordPress固定ページ自動投稿テスト',
'status': 'draft'
}
res = requests.get(
url,
params=params,
auth=(user, password),
)
data = res.json()
print('len(data) : ', len(data))
print('id : ', data[0]['id'])
print('slug : ', data[0]['slug'])
return
if __name__ == '__main__':
search_a_page()
投稿済みの固定ページを変更して、また自動投稿する
最後に、上で取得した投稿済み固定ページを変更して、再投稿します。
参考にするサイトは、REST API Handbook | Update a Page です。
実装コードです。上で取得した固定ページIDを使用します。タイトルを変えてみます。
Python
import requests
from urllib.parse import urljoin
def update_a_page():
# 変更する固定ページのID
page_id = 768
url_base = 'https://kamiki.blog/'
url = urljoin(url_base, 'wp-json/wp/v2/pages/' + str(page_id))
user = 'xxx' # ユーザー名
password = 'xxx' # アプリケーションパスワード
params = {
'title': 'WordPress固定ページ自動投稿テスト(改)',
}
res = requests.post(
url,
params=params,
auth=(user, password),
)
return
if __name__ == '__main__':
update_a_page()
コードを実行すると、固定ページのタイトルを変更できました。
これ が変更後の固定ページです。