1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPress REST APIの使い方

Last updated at Posted at 2024-11-10

REST APIとは

REST は Representational State Transfer の略であり, WordPressでは記事のやり取り等を行うものとして使用できます.

この記事では, WordPress REST APIの使い方について説明します.

Application Passwordの取得方法

WordPressの認証を行い, 記事を投稿するためにはApplication Passwordが必要になります.
WordPressのDashboardから以下の手順で取得することができます.

  1. WordPressの管理画面にログイン
  2. 管理画面メニューのユーザー → プロファイルを開く
  3. ページ下部にあるApplication Passwordの項目までスクロールする
  4. 新しいパスワードの名前(Application Passwordにつけたい名前) を入力し, パスワードを追加をクリックする
  5. 生成されたパスワードを控える
    下記のように作成できていればOKです. パスワード部分は秘匿してます.

image.png

Application Passwordを取得する際に, httpではパスワードを取得することができないため, 開発用サイトとしてwp-config.phpに環境タイプを設定する必要があります.

image.png

Application Passwordを取得する際に, 上記の画面が出ていた場合は設定が必要になります.
設定方法を以下に記載します.

HTTPアクセスでのApplication Password利用方法

  1. WordPressを動作させているVMやコンテナに入る
  2. /var/www/html 内にある wp-config.phpファイルに以下の内容を追記する
wp-config.php
/** ApplicationPassword HTTP Allow */
define( 'WP_ENVIRONMENT_TYPE', 'local' );

3.上記の記載ができたら, 再度WordPressの管理画面にアクセス
4.下記の様な画面が表示されていたら, Appplication Passwordを取得可能です

image.png

記事の取得方法

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?