【WordPress効率化③】WordPress API詳解!記事投稿・更新・削除をコードで操る

WordPress

こんにちは!「WordPress効率化」シリーズ第3回へようこそ。前回・前々回では、WordPressの管理画面を使った効率化テクニックや、外部ツールとの連携方法についてご紹介してきました。今回はいよいよ本格的に「WordPress REST API」を使って、記事の投稿・更新・削除をコードで自動化する方法を解説していきます。

「API」と聞くと難しそうに感じるかもしれませんが、仕組みさえ理解してしまえば、管理画面をポチポチ操作するよりもずっと効率的に記事管理ができるようになります。プログラミング初心者の方にも分かりやすいように、順を追って丁寧に解説していきますので、ぜひ最後までお付き合いください。

WordPress REST APIとは?基本をおさらいしよう

まずは「WordPress REST API」がどんなものなのか、基本からおさらいしていきましょう。

REST APIの役割

WordPress REST APIとは、WordPressに標準で搭載されている機能で、外部のプログラムからHTTP通信を使ってWordPressのデータ(記事・固定ページ・ユーザー情報など)を操作できる仕組みです。これを使うことで、管理画面にログインしなくても、プログラムから直接「記事を投稿する」「記事を更新する」「記事を削除する」といった操作ができるようになります。

例えば、外部システムで作成したデータを自動でブログ記事として投稿したり、複数の記事をまとめて更新したりといった作業を、手動操作なしで実行できるのが大きなメリットです。

認証方法を理解しよう

記事の投稿・更新・削除といった「書き込み系」の操作を行う場合は、認証(ログイン情報の確認)が必須になります。もっとも手軽な方法が「アプリケーションパスワード」です。

  1. WordPress管理画面にログイン
  2. 「ユーザー」→「プロフィール」を開く
  3. ページ下部の「アプリケーションパスワード」欄で新しいパスワードを生成
  4. 表示された文字列を控えておく(再表示はできないので注意)

このアプリケーションパスワードとユーザー名を組み合わせて、APIリクエストに認証情報を付与します。

記事を投稿する(POSTリクエスト)

それでは実際に、APIを使って新規記事を投稿する方法を見ていきましょう。

エンドポイントの確認

記事投稿に使うエンドポイントは以下の形式です。

POST https://あなたのサイトURL/wp-json/wp/v2/posts

curlコマンドでの実行例

まずはシンプルにcurlコマンドで試してみましょう。

curl -X POST https://example.com/wp-json/wp/v2/posts \
-u "ユーザー名:アプリケーションパスワード" \
-H "Content-Type: application/json" \
-d '{
  "title": "APIから投稿したテスト記事",
  "content": "これはWordPress REST APIを使って投稿した本文です。",
  "status": "publish"
}'

statusを"draft"にすれば下書き保存、"publish"にすれば即公開になります。まずはdraftで試してみるのがおすすめです。

PHPからリクエストする例

実際の運用では、PHPやJavaScriptからAPIを呼び出すケースが多いでしょう。以下はPHPの例です。

<?php
$url = 'https://example.com/wp-json/wp/v2/posts';
$username = 'ユーザー名';
$app_password = 'アプリケーションパスワード';

$data = [
    'title'   => 'PHPから投稿したテスト記事',
    'content' => 'PHPのcURL関数を使って投稿しています。',
    'status'  => 'draft',
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_USERPWD, "$username:$app_password");
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

実行すると、投稿されたデータがJSON形式で返ってきます。この中のidを控えておくと、後ほど更新や削除の際に使えます。

記事を更新する(POST/PUTリクエスト)

次は、既存の記事を更新する方法です。基本的な流れは投稿とほとんど同じですが、エンドポイントに記事IDを含める点が異なります。

エンドポイントの形式

POST https://あなたのサイトURL/wp-json/wp/v2/posts/{記事ID}

更新のリクエスト例

投稿済みの記事タイトルと本文を書き換えてみましょう。

curl -X POST https://example.com/wp-json/wp/v2/posts/123 \
-u "ユーザー名:アプリケーションパスワード" \
-H "Content-Type: application/json" \
-d '{
  "title": "更新後のタイトルです",
  "content": "本文の内容を更新しました。"
}'

ポイントは、変更したい項目だけを指定すればよいという点です。指定しなかった項目は元のデータのまま保持されます。

更新時によくあるつまずきポイント

  • 記事IDが間違っていると404エラーになる
  • 認証情報が正しくないと403エラー(権限エラー)になる
  • 下書き記事を更新する際、statusを指定しないと元のステータスが維持される

エラーが出た場合は、レスポンスのJSONに含まれるcodeとmessageを確認すると原因が特定しやすいです。

記事を削除する(DELETEリクエスト)

最後に、記事を削除する方法を解説します。削除は取り返しがつかない操作なので、特に慎重に扱いましょう。

エンドポイントの形式

DELETE https://あなたのサイトURL/wp-json/wp/v2/posts/{記事ID}

削除のリクエスト例

curl -X DELETE https://example.com/wp-json/wp/v2/posts/123 \
-u "ユーザー名:アプリケーションパスワード"

デフォルトでは、記事は完全削除ではなく「ゴミ箱」に移動します。完全に削除したい場合は、以下のようにforceパラメータを付与します。

curl -X DELETE "https://example.com/wp-json/wp/v2/posts/123?force=true" \
-u "ユーザー名:アプリケーションパスワード"

削除操作の注意点

  • force=trueを付けると復元できないため、事前にバックアップを取っておくと安心です
  • 削除前に対象記事のIDやタイトルを必ず確認する処理を入れましょう
  • 本番環境でテストする前に、必ずステージング環境などで動作確認を行いましょう

まとめ

今回は、WordPress REST APIを使って記事の投稿・更新・削除をコードから操作する方法を解説しました。ポイントをおさらいすると以下の通りです。

  • アプリケーションパスワードを使えば安全に認証できる
  • POST /wp/v2/postsで新規記事を投稿できる
  • POST /wp/v2/posts/{id}で既存記事を更新できる
  • DELETE /wp/v2/posts/{id}で記事を削除できる(force=trueで完全削除)

最初はコードを書くことにハードルを感じるかもしれませんが、一度仕組みを理解してしまえば、複数記事の一括処理や外部システムとの連携など、応用範囲がぐっと広がります。ぜひ実際にご自身のテスト環境で試してみてください。

次回のシリーズ記事では、さらに一歩進んで、カスタムフィールドやメディアファイルのアップロードをAPIから操作する方法をご紹介する予定です。お楽しみに!

\ 高速WordPress環境を構築するなら /

【15日間無料】コアサーバーでWordPressを始める >

タイトルとURLをコピーしました