WordPress REST APIで投稿しようとしても、うまく通らないことがあります。
記事が作れない、認証で止まる、画像アップロードだけ失敗する。
このあたりは、最初につまずきやすいポイントです。
結論から言うと、投稿できないときは、いきなり全部を疑うより、`到達` `認証` `権限` `APIの種類` の順で切り分けるのが早いです。
特に見るべきなのは、`401` `403` `404` といったエラーコードです。
この記事では、WordPress REST APIで投稿できないときの確認ポイントを、実務向けにやさしく整理します。
先に結論。まずは4つに分けて考える
WordPress REST APIで投稿できないときは、原因を次の4つに分けると見やすいです。
- そもそもサイトに届いていない
- 認証で止まっている
- 権限不足で止まっている
- 投稿APIとメディアAPIを混同している
この順番で見るだけでも、かなり早く原因に近づけます。
まず確認したいのは「そもそも届いているか」
最初に見るべきは、WordPressにリクエストが届いているかどうかです。
ここが崩れていると、認証や権限を見ても意味がありません。
サイトURLや API エンドポイントは正しいか
まず `https://example.com/wp-json/wp/v2` のような公開APIが開くかを確認します。
ここが開かなければ、URLの指定ミスやサイト側の問題が疑われます。
DNS やネットワークエラーではないか
リバースプロキシやセキュリティ設定で止められていないか
環境によっては、WAF や Basic 認証、セキュリティ系プラグインが外部アクセスを止めていることがあります。
特に本番だけ失敗する場合は、この可能性も考えたほうがよいです。
401エラーなら、まず認証を疑う
ユーザー名とアプリケーションパスワードは合っているか
WordPressのアプリケーションパスワードは、通常のログインパスワードとは別です。
ここを混同すると、認証は通りません。
Authorization ヘッダーの付け方は正しいか
Basic認証を使う場合は、`username:application-password` を Base64 にしてヘッダーへ入れます。
文字列の作り方が1か所でもずれると、すぐ `401` になります。
まず `/users/me` で認証だけ確認する
投稿作成まで一気に試すと、切り分けがしにくくなります。
最初に `/wp-json/wp/v2/users/me` が取れるかを見ると、認証だけを先に確認できます。
403エラーなら、権限不足や制限を疑う
投稿権限のあるユーザーを使っているか
閲覧だけの権限では、投稿作成や更新はできません。
最低でも投稿に必要な権限を持つユーザーを使う必要があります。
セキュリティプラグインやサーバー制限で止まっていないか
REST API自体や、特定のメソッドだけを止める設定が入っていることがあります。
認証が正しいのに `403` が出るなら、この可能性は高いです。
カスタム投稿タイプや権限設定を触っていないか
通常の `posts` は通っても、独自の投稿タイプや特定のメディア処理だけ失敗する場合があります。
標準投稿で通るかどうかを先に見ると、範囲を絞りやすいです。
404エラーなら、APIの場所か設定を疑う
`/wp-json/` が生きているか
まず `https://example.com/wp-json/` を開いて、WordPressの情報が返るかを確認します。
ここが返らないなら、REST APIの入口自体を見直す必要があります。
パーマリンク設定が崩れていないか
WordPressは、パーマリンク設定や rewrite の不具合で API 側の見え方が変わることがあります。
`404` が続くなら、この点も確認候補です。
`posts` と `media` のエンドポイントを混同していないか
投稿作成は `/posts`、画像アップロードは `/media` です。
この2つを混同すると、URLが合っていても意図した動きになりません。
投稿だけ通るのに、画像だけ失敗する理由
ここはかなり多いです。
投稿作成は成功するのに、メディア登録だけ失敗するなら、問題はメディアAPI側に寄っています。
ファイルアップロードの形式が合っているか
画像アップロードは、JSONではなくファイル送信の扱いになります。
そのため、投稿APIより失敗しやすいです。
MIMEタイプやファイル名の扱いに問題がないか
画像の形式やヘッダーの付け方がずれると、メディア登録だけ止まることがあります。
特に自動化するときは、ここをログで確認できるようにしたほうが安全です。
先に投稿APIだけ安定させる
投稿と画像を同時に直そうとすると、原因が見えにくくなります。
先に投稿APIだけ通し、その後でメディアAPIを確認する順番がおすすめです。
全体の流れから見たい人は、WordPressを管理画面なしで更新する方法 https://attrip.jp/217274/ が入口になります。
実務でおすすめの確認順
最短で切り分けたいなら、順番を固定したほうがラクです。
- `wp-json` が開くか
- `users/me` で認証が通るか
- 下書き投稿が作れるか
- メディアAPIが通るか
- 最後に公開切り替えとURL確認をする
この順番にすると、どこで止まったかがかなり明確になります。
ログを残しておくと次回が速い
同じトラブルを何度も繰り返さないためには、エラー内容をそのまま残すのが大切です。
`401` `403` `404` `ENOTFOUND` のような実エラーは、次回の切り分け材料になります。
運用メモとして残すなら、`URL` `エラーコード` `何を試したか` の3点だけでも十分です。
自動化全体の進め方は、WordPress更新の自動化・第2弾 https://attrip.jp/217278/ と合わせると見えやすくなります。
まとめ
WordPress REST APIで投稿できないときは、いきなり全部を直そうとしないほうが早いです。
まずは `到達` `認証` `権限` `APIの種類` の順で見ていくのが基本です。
特に次の4点を先に確認すると、かなり切り分けしやすくなります。
- `/wp-json/` が開くか
- `/users/me` で認証だけ通るか
- 投稿APIだけなら成功するか
- メディアAPIだけ失敗していないか
REST APIのトラブルは、順番を固定して見るだけでかなり整理できます。
まずは投稿だけ通すところから始めるのがおすすめです。
FAQ
REST APIで `401` が出たら何を見ればいいですか?
まず、ユーザー名、アプリケーションパスワード、Authorization ヘッダーを確認します。
最初に `/users/me` を試すと、認証だけ切り分けやすいです。
`403` と `401` の違いは何ですか?
投稿はできるのに画像だけ失敗するのはなぜですか?
投稿APIとメディアAPIは別物だからです。
ファイル送信やヘッダーの扱いが加わるため、画像側だけ失敗しやすくなります。
最初は REST API と wp-cli のどちらから始めるべきですか?
外部連携まで進めたいなら REST API、更新フロー全体をつかみたいなら wp-cli が分かりやすいです。
wp-cli の考え方は、wp-cliでWordPressを更新する https://attrip.jp/217441/ も参考になります。
関連記事
- WordPressを管理画面なしで更新する方法 https://attrip.jp/217274/
- WordPress更新の自動化・第2弾 https://attrip.jp/217278/
- wp-cliでWordPressを更新する https://attrip.jp/217441/