WP REST API で固定ページを自動投稿する

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
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()

コードを実行すると、固定ページのタイトルを変更できました。
変更された固定ページ

これ が変更後の固定ページです。