REST APIとは
REST は Representational State Transfer の略であり, WordPressでは記事のやり取り等を行うものとして使用できます.
この記事では, WordPress REST APIの使い方について説明します.
Application Passwordの取得方法
WordPressの認証を行い, 記事を投稿するためにはApplication Passwordが必要になります.
WordPressのDashboardから以下の手順で取得することができます.
- WordPressの管理画面にログイン
- 管理画面メニューのユーザー → プロファイルを開く
- ページ下部にあるApplication Passwordの項目までスクロールする
- 新しいパスワードの名前(Application Passwordにつけたい名前) を入力し, パスワードを追加をクリックする
- 生成されたパスワードを控える
下記のように作成できていればOKです. パスワード部分は秘匿してます.
Application Passwordを取得する際に, httpではパスワードを取得することができないため, 開発用サイトとしてwp-config.phpに環境タイプを設定する必要があります.
Application Passwordを取得する際に, 上記の画面が出ていた場合は設定が必要になります.
設定方法を以下に記載します.
HTTPアクセスでのApplication Password利用方法
- WordPressを動作させているVMやコンテナに入る
-
/var/www/html
内にあるwp-config.php
ファイルに以下の内容を追記する
/** ApplicationPassword HTTP Allow */
define( 'WP_ENVIRONMENT_TYPE', 'local' );
3.上記の記載ができたら, 再度WordPressの管理画面にアクセス
4.下記の様な画面が表示されていたら, Appplication Passwordを取得可能です
記事の取得方法
WordPressのサイトURLに, /wp-json/wp/v2/posts
と記載することで, 公開記事を一覧として取得することができます.
また, 特定のパラメータを付け加えることで, 条件に基づくデータ取得も可能です.
オプションのパラメータ例
-
per_page
: 取得する記事数(デフォルト10、最大100) -
page
: ページ番号(ページごとの表示用) -
search
: キーワード検索
Python例
import requests
url = "https://example.com/wp-json/wp/v2/posts"
params = {
"per_page": 5,
"page": 1
}
response = requests.get(url, params=params)
if response.status_code == 200:
posts = response.json()
for post in posts:
print(f"Title: {post['title']['rendered']}")
print(f"Content: {post['content']['rendered']}")
else:
print("Failed to retrieve posts")
記事の投稿の仕方
WordPressのサイトURLに, /wp-json/wp/v2/posts
と記載し, 先ほど取得した Application Passwordで認証することにより, 記事を投稿することができるようになります.
必須パラメータ
-
title
: 記事タイトル -
content
: 記事の本文 -
status
: 記事の公開状況 (publish, draft)
Python例
import requests
from requests.auth import HTTPBasicAuth
url = "https://example.com/wp-json/wp/v2/posts"
data = {
"title": "Pythonから投稿する記事",
"content": "この記事はWordPress REST APIを使って自動投稿されました.",
"status": "publish"
}
auth = HTTPBasicAuth("your_username", "your_application_password")
response = requests.post(url, json=data, auth=auth)
if response.status_code == 201:
print("Post created successfully!")
else:
print(f"Failed to create post: {response.status_code}")
Curlコマンドを利用した例
curl -X POST https://example.com/wp-json/wp/v2/posts \
-H "Authorization: Basic $(echo -n 'your_username:your_application_password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"title": "REST APIによる投稿",
"content": "この記事はcurlコマンドを使って投稿されました。",
"status": "publish"
}'
実行結果
上記のコマンドを実行すると, 投稿に成功した場合, 以下のようなJSON形式の返答があります.
{
"id": 123,
"date": "2024-11-10T12:34:56",
"title": {
"rendered": "REST APIによる投稿"
},
"content": {
"rendered": "<p>この記事はcurlコマンドを使って投稿されました。</p>"
},
"status": "publish",
"link": "https://example.com/2024/11/10/rest-apiによる投稿/"
}
参考記事
WP REST API Documentation
REST API Handbook | WordPress Developer Resources
REST APIとは | Red Hat