選ばれるAI診断

WordPress REST APIで記事を投稿する方法|アプリケーションパスワードの設定から、画像・予約投稿・エラー対処まで

公開日: / カテゴリ: WordPress入稿 / 執筆: エラバレル

WordPress REST APIで記事を投稿する方法|アプリケーションパスワードの設定から、画像・予約投稿・エラー対処まで

「WordPressへの投稿を、プログラムから自動でできないか」「REST APIを使えばいいと聞いたけれど、認証の設定でつまずいた」。記事の入稿を効率化したい方や、社内の仕組みとWordPressをつなぎたいエンジニアの方から、こうした相談をよくいただきます。

先に結論をお伝えします。**WordPress 5.6以降なら、標準の「アプリケーションパスワード」を発行して、/wp-json/wp/v2/posts に送るだけで記事を投稿できます。** プラグインを追加する必要はありません。ログイン用のパスワードを外部に渡さずに済むのも利点です。

一方で、実際にやってみると「401エラーで認証が通らない」「投稿はできたが、ブロックエディタで開くと1つのクラシックブロックになっている」「画像が入らない」といった壁にぶつかりがちです。この記事では、そうした落とし穴も含めて、REST APIで記事を投稿するまでの手順を順番に説明します。

この記事でわかること

  • WordPress REST APIとは何か、何ができるのか
  • アプリケーションパスワードの発行手順
  • curlとPythonで記事を投稿するサンプル
  • 画像のアップロード、アイキャッチ、カテゴリ、予約投稿の指定方法
  • 投稿した記事がブロックにならない理由と対処
  • 401・403・404エラーの原因と直し方

WordPress REST APIとは?

WordPress REST APIは、WordPressの記事・固定ページ・画像・カテゴリなどを、決まった形式のURLとデータ(JSON)で読み書きできる仕組みです。WordPress 4.7から本体に組み込まれており、今のWordPressなら最初から使えます。

ふだん管理画面で行っている「投稿を追加」「メディアをアップロード」といった操作を、プログラムから行えるようになります。たとえば、次のような使い方ができます。

  • 社内の原稿管理の仕組みから、WordPressに下書きを自動で作る
  • 決まった時間に、まとめて予約投稿を登録する
  • 複数のWordPressサイトに、同じ形式で記事を入れる
  • 別の場所で管理している商品情報を、記事として反映する
操作送り先(エンドポイント)方法
記事の一覧を読む/wp-json/wp/v2/postsGET
記事を作る/wp-json/wp/v2/postsPOST
記事を書き換える/wp-json/wp/v2/posts/記事のIDPOST
画像をアップロードする/wp-json/wp/v2/mediaPOST
カテゴリの一覧を読む/wp-json/wp/v2/categoriesGET
タグを作る/wp-json/wp/v2/tagsPOST

記事を読むだけなら認証はいりませんが、記事を作る・書き換えるには認証が必要です。その認証に使うのが、次に説明するアプリケーションパスワードです。

「エンドポイント」とは

APIで、データを送ったり受け取ったりする先のURLのことです。WordPressでは、サイトのURLの後ろに /wp-json/wp/v2/ を付けた形になります。たとえば https://example.com/wp-json/wp/v2/posts が、記事のエンドポイントです。

WordPressを使っているサイトの割合

  • 選ばれるAI診断が診断した22業種・2,296件の公式サイトのうち、WordPressで作られていたのは1,134件(49%)
  • 小さな会社やお店のホームページでも、およそ2件に1件がWordPressでした
  • REST APIは、これらのサイトで標準で使える仕組みです

アプリケーションパスワードを発行する

アプリケーションパスワードは、WordPress 5.6で追加された標準機能です。ログイン用のパスワードとは別に、外部のツールやプログラム専用のパスワードを発行できます。 用途ごとに発行でき、不要になったら個別に取り消せます。

発行の手順

  1. WordPressの管理画面にログインする
  2. 左のメニューの「ユーザー」から「プロフィール」を開く(管理者が別のユーザー用に作る場合は「ユーザー」→「ユーザー一覧」から対象のユーザーを開く)
  3. 画面の下のほうにある「アプリケーションパスワード」の欄を探す
  4. 「新しいアプリケーションパスワード名」に、用途が分かる名前(例:「記事の自動投稿」)を入れる
  5. 「新しいアプリケーションパスワードを追加」を押す
  6. 表示された24文字のパスワードを、その場で控える

パスワードは一度しか表示されない

発行したアプリケーションパスワードは、画面を閉じると二度と表示されません。控え忘れたら、取り消して作り直してください。表示されるパスワードには4文字ごとに空白が入っていますが、空白は入れても入れなくても使えます。

投稿に使うユーザーの権限に注意

REST APIでできることは、そのユーザーの権限と同じです。「投稿者」なら自分の記事を公開できますが、「寄稿者」は公開できず、下書きの保存までです。カテゴリを新しく作るには「編集者」以上の権限が必要です。自動投稿用に、必要な権限だけを持つユーザーを別に作っておくと安全です。

アプリケーションパスワードの欄が見当たらないとき

  • サイトがHTTPSになっていない:アプリケーションパスワードは、原則としてHTTPS(鍵マーク)のサイトでしか使えません
  • セキュリティのプラグインが止めている:REST APIやアプリケーションパスワードを無効にする設定が入っていないか確認する
  • WordPressが5.6より古い:本体を更新する

詳しい確認の順番は、アプリケーションパスワードとは?の記事で説明しています。

curlで記事を投稿してみる

まずは、コマンドで動作を確かめるのが早道です。curlは、WindowsやMacに入っている、URLにデータを送るためのコマンドです。

curl -X POST "https://example.com/wp-json/wp/v2/posts" \
  -u "ユーザー名:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"title":"テストの記事","content":"<p>本文です。</p>","status":"draft"}'
  • -u の後ろに「ユーザー名:アプリケーションパスワード」を書く(Basic認証)
  • status を draft にすると下書き、publish にすると公開になる
  • 成功すると、作られた記事の情報(id や link など)がJSONで返ってくる

管理画面の「投稿」→「投稿一覧」を開き、下書きが増えていれば成功です。

まずは必ず「下書き」で試す

テストのつもりで publish を指定すると、そのまま公開され、RSSやSNSの自動共有が動くこともあります。動作の確認は、必ず status を draft にして行ってください。

Pythonで記事を投稿する

決まった作業を繰り返すなら、プログラムにしておくと便利です。Pythonの requests というライブラリを使った例です。

import requests

site = "https://example.com"
auth = ("ユーザー名", "xxxx xxxx xxxx xxxx xxxx xxxx")

data = {
    "title": "テストの記事",
    "content": "<p>本文です。</p>",
    "status": "draft",
    "slug": "test-post",
    "categories": [3],
    "tags": [5, 8],
    "excerpt": "記事の抜粋です。",
}
r = requests.post(f"{site}/wp-json/wp/v2/posts", auth=auth, json=data, timeout=30)
r.raise_for_status()
print(r.json()["id"], r.json()["link"])

よく使う項目

項目内容書き方の例
title記事の題名"WordPressの使い方"
content本文(HTML)"<p>本文</p>"
status状態draft(下書き)、publish(公開)、future(予約)、pending(レビュー待ち)、private(非公開)
date公開日時(サイトの時間帯)"2026-10-20T09:00:00"
slugURLの末尾"wordpress-tsukaikata"
categoriesカテゴリのID(数字の配列)[3]
tagsタグのID(数字の配列)[5, 8]
featured_mediaアイキャッチ画像のID123
excerpt抜粋"記事の要約です。"

カテゴリとタグは、名前ではなくID(数字)で指定します。IDは、/wp-json/wp/v2/categories を開くと一覧で確認できます。ない名前のタグを使いたいときは、先に /wp-json/wp/v2/tags にPOSTして作り、返ってきたIDを使います。

予約投稿にするには

status を future にして、date に未来の日時を入れます。date はサイトの設定(「設定」→「一般」のタイムゾーン)の時間で解釈されます。日本時間で決めたいときは、タイムゾーンが「東京」になっているかを確かめてください。過去の日時を入れると、予約ではなくすぐに公開されることがあるので注意が必要です。まとめて予約するときの考え方は、WordPressで記事をまとめて予約投稿する方法の記事で説明しています。

画像をアップロードして、アイキャッチにする

本文の中の画像やアイキャッチを使うには、先に画像をメディアライブラリにアップロードし、返ってきたIDやURLを使います。

with open("photo.jpg", "rb") as f:
    r = requests.post(
        f"{site}/wp-json/wp/v2/media",
        auth=auth,
        headers={
            "Content-Disposition": 'attachment; filename="photo.jpg"',
            "Content-Type": "image/jpeg",
        },
        data=f.read(),
        timeout=60,
    )
media = r.json()
print(media["id"], media["source_url"])
  • アイキャッチにするなら、記事を作るときに "featured_media": media["id"] を指定する
  • 本文に入れるなら、media["source_url"] を使って <img> を書く
  • 代替テキスト(画像の説明)は、/wp-json/wp/v2/media/画像のID に alt_text を送って設定できる

ほかのサイトの画像のURLを、本文にそのまま書くこともできますが、元のサイトで画像が消えると表示されなくなります。自分のメディアライブラリにアップロードしてから使うのが確実です。

投稿した記事が「ブロック」にならない問題

REST APIで投稿した記事を、ブロックエディタ(Gutenberg)で開くと、本文全体が1つの「クラシック」ブロックにまとまっていることがあります。これは不具合ではなく、送った本文がふつうのHTMLだったためです。

ブロックエディタの記事は、HTMLの間に「ここからここまでが段落ブロック」という目印のコメントが入った形で保存されています。

<!-- wp:heading -->
<h2 class="wp-block-heading">見出し</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>本文です。</p>
<!-- /wp:paragraph -->

この目印付きの形で送れば、最初からブロックに分かれた記事になります。目印のないHTMLを送った場合は、エディタで開いてから「ブロックへ変換」を選ぶと、ブロックに分けられます。

送り方エディタでの見え方手間
ふつうのHTML1つのクラシックブロック開くたびに変換が必要
ブロックの目印付きのHTML見出し・段落・表などのブロックに分かれる送る側で目印を付ける処理が必要

見出し・段落・リスト程度なら目印を付けるのは難しくありませんが、表、画像、テーマ独自の吹き出しやボックスまで正しく変換しようとすると、処理がかなり複雑になります。

〇〇工務店の施工事例の自動投稿

やりたいこと:社内のスプレッドシートにある施工事例(題名・地域・工期・写真)を、毎週まとめて下書きにする。
やり方:①写真を /media にアップロードしてIDを受け取る ②本文を、見出し・段落・画像のブロックの目印付きHTMLで組み立てる ③status を draft にして /posts に送る ④担当者が下書きを確認してから公開する。
注意:公開まで自動にせず、人が確認する段階を残す。

401・403・404エラーの原因と直し方

REST APIでつまずきやすいのは、認証まわりのエラーです。主な原因と直し方をまとめます。

エラーよくある原因直し方
401 rest_not_logged_in認証の情報(Authorizationヘッダー)がサーバーの途中で消えているサーバーの設定(.htaccess)で、Authorizationヘッダーを渡すようにする。サーバー会社のヘルプを確認する
401 incorrect_passwordアプリケーションパスワードが違う、またはログインパスワードを使っている発行したアプリケーションパスワードを使う。取り消していないか確認する
403 rest_cannot_createユーザーの権限が足りない投稿者・編集者などの権限を持つユーザーで認証する
403(WordPressのエラーではない画面)セキュリティのプラグインやサーバーのWAF(不正な通信を止める機能)が止めているプラグインのREST APIの制限を確認する。WAFの記録を確認し、除外を設定する
404 rest_no_routeパーマリンクの設定が「基本」で、/wp-json/ が使えない「設定」→「パーマリンク」で「投稿名」などにする。または ?rest_route=/wp/v2/posts の形で送る

認証が通らないときのチェックリスト

  • ログイン用ではなく、アプリケーションパスワードを使っている
  • ユーザー名は、表示名ではなくログイン用のユーザー名になっている
  • URLが https で始まっている
  • ブラウザで /wp-json/ を開くと、JSONが表示される
  • セキュリティのプラグインで、REST APIを止めていない
  • そのユーザーに、記事を作る権限がある

プログラムを書かずに自動化したい人へ

ここまでの手順で、REST APIの投稿はひととおりできます。ただ、実際の入稿で手間がかかるのは、原稿を、WordPressのブロックの形に組み立てる部分です。見出し・太字・リンク・表・画像を正しく変換し、画像をメディアライブラリにアップロードし、カテゴリやアイキャッチを指定する。これを自分で作り込むのは、意外と大変です。

原稿をGoogleドキュメントで書いているなら、ドクポスのように、REST APIとアプリケーションパスワードを使って入稿までを行うウェブサービスを使う方法もあります。ドクポスは、GoogleドキュメントのURLを貼ると、見出し・太字・リンク・箇条書き・表・画像・蛍光ペンをWordPressのブロックに変換して、下書き・予約・公開のいずれかで記事を作ります。画像はメディアライブラリにアップロードした状態で入り、ドキュメントの先頭に「カテゴリ:」「スラッグ:」「公開日:」などを書いておけば、記事の設定にも反映されます。WordPressのログインパスワードは渡さず、アプリケーションパスワードで接続します。

仕組みを理解したうえで「自分で作るか、既存のサービスを使うか」を選べるのが、REST APIを知っておくいちばんの利点です。Googleドキュメントからの入稿方法の比較は、GoogleドキュメントをWordPressの記事に変換する方法の記事でまとめています。

自動投稿で気をつけること

自動化すると、間違った内容も一気に公開されてしまいます。最初は下書きで登録し、人が確認してから公開する流れにしてください。また、アプリケーションパスワードは、ログインパスワードと同じくらい大事な情報です。プログラムの中に直接書いて共有したり、公開の場所に置いたりしないでください。

よくある質問

REST APIを使うのに、プラグインは必要ですか?

記事の投稿だけなら必要ありません。REST APIはWordPress 4.7から、アプリケーションパスワードは5.6から、本体の標準機能です。SEOプラグインの入力欄(メタディスクリプションなど)に書き込みたい場合は、そのプラグインがREST APIに対応しているかを確認する必要があります。

ログイン用のパスワードで認証してはいけないのですか?

標準の仕組みでは、REST APIのBasic認証にログイン用のパスワードは使えません。アプリケーションパスワードを使います。用途ごとに発行・取り消しができるので、ログイン用のパスワードを外部に渡すより安全です。

記事を書き換えるにはどうすればいいですか?

/wp-json/wp/v2/posts/記事のID に、変えたい項目だけを送ります。たとえば題名だけ変えるなら、{"title":"新しい題名"} を送ります。記事のIDは、投稿したときに返ってきた id か、管理画面の編集画面のURLで確認できます。

固定ページも投稿できますか?

できます。送り先を /wp-json/wp/v2/pages にします。項目は記事とほぼ同じですが、カテゴリとタグはありません。

1回にたくさんの記事を送っても大丈夫ですか?

短い時間に大量に送ると、サーバーの負荷が上がったり、WAFに不正な通信と判断されたりすることがあります。1件ずつ間を空けて送り、エラーが出たら止まるようにしておくと安全です。まとめて入れる方法の比較はWordPressに記事をまとめて投稿する方法の記事にまとめています。

アプリケーションパスワードが漏れたらどうすればいいですか?

「ユーザー」→「プロフィール」のアプリケーションパスワードの欄で、そのパスワードを取り消してください。取り消せば、すぐに使えなくなります。ログイン用のパスワードは影響を受けません。

まとめ

WordPress REST APIで記事を投稿する方法をまとめます。

この記事のまとめ

  • REST APIは、記事・画像・カテゴリなどをURLとJSONで読み書きできる、WordPressの標準の仕組み
  • 投稿の認証には、WordPress 5.6以降の標準機能「アプリケーションパスワード」を使う
  • /wp-json/wp/v2/posts にPOSTすれば記事ができる。動作確認は必ず下書き(draft)で
  • 画像は先に /media にアップロードし、返ってきたIDをアイキャッチに使う
  • ふつうのHTMLを送ると1つのクラシックブロックになる。ブロックにするには目印付きのHTMLで送る
  • 401は認証の情報が届いていない、403は権限やセキュリティの設定、404はパーマリンクの設定を疑う

プログラムを書かずに、GoogleドキュメントからWordPressへの入稿を自動にしたい場合は、ドクポスを試してみてください。5記事まで、カード登録なしで試せます。

ドクポスを無料で試す

参考にした資料

調査の方法:WordPressの利用割合は、2026年10月に選ばれるAI診断(2026年10月2日に見直した採点基準)で、22業種の公式サイト2,296件を診断したときの判定です。個別のサイト名は公開していません。