Pythonで始めるWordPress自動化 – REST APIの基本

なぜWordPress自動化が必要か

技術ブログを運営していると、「記事を書く」以外の作業が意外と多いことに気づきます。カテゴリの設定、タグの付与、アイキャッチ画像のアップロード、パーマリンクの確認……これらを毎回手動でやっていては、本質的なコンテンツ作成に集中できません。

さらに複数のサイトを管理する場合や、CI/CDパイプラインから自動デプロイしたい場合は、手動操作はボトルネックになります。WordPressが標準で提供しているREST APIを使えば、これらをすべてPythonから自動化できます。

この記事では、WordPressのREST APIをPythonから操作する方法を、実際のコードを交えて解説します。認証の設定からGET/POST/PUT/DELETE操作、メディアアップロードまでを一通り学べる内容です。


環境構築

Python venv の作成

まずPythonの仮想環境を作成して、依存パッケージを管理します。プロジェクトルートで以下を実行します。

# venv作成
python3 -m venv venv

# 有効化(Mac/Linux)
source venv/bin/activate

# 有効化(Windows)
venv\Scripts\activate

requirements.txt の設定

必要なパッケージをrequirements.txtに記載します。このプロジェクトで使用する最小限の構成です。

requests==2.32.3
python-dotenv==1.0.1
markdown==3.7
pip install -r requirements.txt

.env ファイルの設定

認証情報は絶対にコードにハードコードしません.envファイルに切り出して管理します。.gitignore.envを追加することも忘れずに。

# .env
WP_URL=https://your-site.com
WP_USER=your-username
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx

WP_APP_PASSWORDの取得方法については次のセクションで説明します。


Application Passwords の設定手順

WordPress REST APIへの認証にはApplication Passwordsを使います。これはWordPress 5.6から標準搭載された機能で、プラグイン不要で利用できます。JWT認証のようなプラグインに依存せず、セキュリティ的にも優れています。

  1. WordPressの管理画面にログインする
  2. 左メニューの「ユーザー」→「プロフィール」を開く
  3. ページ下部の「アプリケーションパスワード」セクションに移動する
  4. 「新しいアプリケーションパスワードの名前」に任意の名前を入力(例: Python自動化スクリプト
  5. 「アプリケーションパスワードを追加」ボタンをクリック
  6. 表示されたパスワード(xxxx xxxx xxxx xxxx xxxx xxxx形式)をコピーして.envWP_APP_PASSWORDに設定する

注意: パスワードは作成時の1度しか表示されません。必ず安全な場所に保存してください。スペース区切りのまま設定して問題ありません。

また、WordPressのSSL(HTTPS)が有効になっていることを確認してください。HTTPSでない環境では認証情報が平文で送信されるリスクがあります。


基本的なAPI操作

実際のプロジェクトで使用しているWPClientクラスを紹介します。このクラスがあれば、REST APIの各操作を簡潔に記述できます。