PythonでWordPressの固定ページで自動処理する

WordPressの投稿記事に対する自動処理は以下で取り上げました。

PythonでWordPressに記事を自動投稿する PythonでWordPressに投稿された記事の更新をする

今回は固定ページにたいする自動処理を実装します。

実装する内容は以下です。

  • 固定ページの自動投稿
  • 固定ページの検索
  • 固定ページを編集と再投稿

WordPressに固定ページを自動投稿する

固定ページを自動投稿します。

参考にするサイトは、REST API Handbook | Create a Page です。

実装コードです。
POST時のURLに /wp/v2/pages/ を使います。

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するだけです。

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

上記コードを実行すると、コマンドラインに以下のように出力されます。

len(data) : 1
id : 768
slug : wordpress-auto-create-a-page

投稿済みの固定ページを変更して、また自動投稿する

投稿済み固定ページを変更して、再投稿します。

参考にするサイトは、REST API Handbook | Update a Page です。

実装コードです。
上で取得した固定ページIDを使用します。タイトルを変えてみます。

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

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

以下が変更後の固定ページです。

WordPress固定ページ自動投稿テスト(改) WordPress固定ページ自動投稿テスト(改)