MENU

WordPressの全記事一覧をREST APIを使って取得するPythonスクリプト

WordPress REST APIを利用することで、外部アプリケーションからWordPressのデータを簡単に取得できます。この記事では、REST APIを使って全記事を一覧で取得するPythonスクリプトの実装方法を備忘録として記録します。

目次

前提条件

  • WordPress 5.6以降
  • WordPress APIの利用権限があるユーザー(アプリケーションパスワードが必要)
  • Python 3.x
あわせて読みたい
WordPressでアプリパスワードを取得する操作手順 この記事では、WordPressのアプリケーションパスワード機能を使用して、REST APIにアクセスするための手順を解説します。REST APIを通じてWordPressのデータにアクセス...

コード

このスクリプトは、WordPressのREST APIを使って複数ページにわたる記事をリクエストし、すべての記事を取得します。取得されたデータは、JSON形式で返されるため、柔軟に処理することが可能です。

import requests

def get_all_posts(base_url, wp_user, wp_app_password):
    # 初期設定
    posts = []
    per_page = 100  # 1ページあたりの取得件数
    page = 1  # ページ番号
    headers = {
        'Authorization': 'Basic ' + wp_app_password
    }

    while True:
        # APIリクエストURL
        url = f"{base_url}/wp-json/wp/v2/posts?per_page={per_page}&page={page}"

        # リクエストを送信
        response = requests.get(url, headers=headers)

        if response.status_code != 200:
            print(f"Error fetching posts: {response.status_code}")
            break

        data = response.json()

        # 取得した記事をリストに追加
        posts.extend(data)

        # これ以上の記事がない場合は終了
        if len(data) < per_page:
            break

        page += 1  # 次のページに移動

    return posts
    
    
all_posts = get_all_posts(base_url, wp_user, wp_app_password)

for post in all_posts:
    print(post['title']['rendered'])  # 記事タイトルを表示
  • base_url: WordPressサイトのベースURLを設定します。https://your-wordpress-site.comのように指定します。
  • wp_user と wp_app_password: WordPress APIにアクセスするためのアカウント情報とアプリケーションパスワードを指定します。このパスワードは、WordPressのダッシュボードから発行できます。
  • per_page: APIリクエストで一度に取得する記事数を設定します(最大100)。デフォルトでは10件ですが、パフォーマンスを向上させるために最大の100件に設定しています。
  • page: ページネーションを処理するためのページ番号です。
  • headers: API認証に必要なヘッダー情報を指定します。このヘッダーには、Basic Authenticationを利用し、wp_user と wp_app_password を組み合わせた値を設定します。
目次