記事を保存した瞬間に「更新に失敗しました。返答が正しいJSONレスポンスではありません」と出たら、文章の書き方ではなく、ブロックエディターからREST APIへ送った通信がJSON以外の内容を返しています。パーマリンクの再保存だけを繰り返さず、
/wp-json/
の応答、サイトURL、HTTPS、WAF、直前のプラグイン変更を順に確認すれば、原因を狭められます。
最初に答え:保存結果を確認し、REST APIの応答を上から順に調べる
最初に投稿一覧とプレビューで最新内容が保存されたかを確認します。保存されていなければ本文を端末側へ退避し、
https://あなたのドメイン/wp-json/
がJSONを返すか、サイトヘルスでREST APIが正常かを確認します。403ならWAF、404ならURL・パーマリンク、500ならPHPエラーを優先します。
- 投稿一覧で更新日時を確認し、同じ更新ボタンを連打しない
- ツール → サイトヘルスでREST APIの項目を開く
-
公開URLの
/wp-json/を未ログイン画面で一度開く - 設定 → 一般でWordPressアドレスとサイトアドレスを確認する
- 状態コードに応じてWAF・パーマリンク・PHPログを一項目ずつ直す
なぜ「JSONが正しくない」と表示されるのか
ブロックエディターは投稿内容をREST APIへ送り、成功結果をJSONで受け取ります。ところがWAFの403画面、存在しないURLの404ページ、PHP警告を含む500応答、ログイン画面への転送などが返ると、エディターはJSONとして解析できません。エラー文は原因ではなく「期待と違う応答だった」という結果です。
| 見え方 | 原因候補 | 最初の確認 |
|---|---|---|
| /wp-json/ がJSONを表示 | REST入口は到達 | 投稿保存の個別エンドポイントを確認 |
| 403 Forbidden | WAF・セキュリティ制限 | 遮断ログと時刻を照合 |
| 404またはトップへ転送 | URL・rewrite・パーマリンク | 一般設定と.htaccessを確認 |
| 500やPHP警告 | プラグイン・テーマ・PHP | エラーログのファイル名を確認 |
手順1:保存済みか確認して本文を守る
エラー画面のまま更新を連打せず、新しいタブで「投稿 → 投稿一覧」を開きます。対象投稿の更新日時とプレビューを見て、直前の変更が反映済みかを確認してください。反映されていれば二重送信せず、未反映ならエディターの本文をコードエディターまたはローカルメモへ一時保存します。
ブラウザーの戻る操作は、未保存のブロックを失うことがあります。タブを閉じる前に、見出し・画像・リンクまで退避できたかを確認します。
投稿一覧では更新時刻が変わっていませんでした…。
いま画面に残っている文章、先にメモへ避難させた方がいいのかな…?
うん、先に文章をメモへ移しておこう。そこまでできたら、もう慌てなくて大丈夫だよ。
大事なものを守ってから、一つずつ原因を見ようね。
文章をコピーできて、やっと少し息がつけました。
これなら慌てずに、まず一か所だけ見てみられそうです。
そのくらいゆっくりでいいよ。
次は
/wp-json/
を開いて、出てきた数字だけ教えてくれるかな。
手順2:REST APIと状態コードを確認する
「ツール → サイトヘルス → ステータス」でREST APIの結果を開きます。次に未ログインのシークレット画面で
/wp-json/
を開き、波括弧から始まるJSONが表示されるか確認します。
ブラウザーの開発者ツールを使える場合はNetworkで失敗した
wp-json/wp/v2/...
を選び、StatusとResponseを見ます。応答本文に「Forbidden」「Not Found」「Fatal error」があれば、その語が次の確認先です。
手順3:URL・パーマリンク・HTTPSを整える
「設定 → 一般」のWordPressアドレスとサイトアドレスで、https、ホスト名、サブディレクトリが実際のURLと一致するか確認します。異なるURLを安易に同じへ変更すると管理画面へ入れなくなるため、設置構成が分からない場合は先にサーバーの設置先を確認します。
「設定 → パーマリンク」で現在の構造を変えずに「変更を保存」し、rewriteルールを再生成します。その後、投稿保存と
/wp-json/
を再検査します。
手順4:WAF・プラグイン・PHPエラーを切り分ける
403ならサーバーパネルのWAF検知ログで、保存操作と同時刻のルールを探します。WAFをサイト全体で無効にせず、該当ルール・該当URLだけを確認し、必要ならサポートへ誤検知として相談します。
500ならPHPエラーログのファイルパスからプラグインまたはテーマを特定します。直前に更新した一件だけを停止し、保存が成功するか比較します。すべてのプラグインを一括停止して原因を見失わないでください。
403と500で見る場所が違うんですね。
数字だけ見るとむずかしそうで、私、また変なところを触りそうです…。
怖いと思ったら、いったん止まっていいんだよ。
直前に変えたものと、ログに名前が出たものだけ見れば十分だからね。
全部のプラグインを止めなくていいなら助かります。
直前に変えたもの、思い出せるかな…メモを見ながら探してみます。
うん、ここまでできたら十分だよ。
更新できたことと公開画面を確かめたら、今日は安心して編集へ戻っていいよ。
応答内容から次の一手を決める例
たとえば保存要求が403で、応答本文にサーバーのWAF名が出ていれば、本文ブロックを削る前にWAFログを確認します。404で投稿IDを含むREST URLだけが見つからないなら、パーマリンクとrewriteを確認します。200なのに先頭へPHP Warningが付く場合は、JSON自体ではなく警告を出したファイルが原因です。
「プラグインを全部止める」「テーマを初期化する」といった大きな変更より、応答に書かれた事実から一件を選ぶ方が、復旧後の説明もできます。作業前後のStatus、Response先頭、保存結果を一組で残してください。
一つ止めたら更新できました…よかったぁ。
でも、これだけで直ったって決めてしまって大丈夫かな…?
そこまで絞れたなら、もう闇雲に触らなくて大丈夫だよ。
同じ表示でも原因は違うから、数字と時刻を見ながら一つずつ直していこうね。
公開ページにも文章が出ていました!
まだちょっとドキドキしていますけど、今度同じ表示が出ても前より慌てずに済みそうです。
成功したと判断するチェック
投稿の更新ボタンを一度押して成功表示になり、投稿一覧の更新日時が変わり、未ログインのプレビューまたは公開ページへ最新本文が出ます。サイトヘルスのREST APIが正常で、同じ時刻に403・404・500が新しく記録されないことも確認します。
- 投稿本文を退避または保存確認した
- REST APIの状態コードを確認した
- URLとHTTPSが設置構成と一致した
- WAFまたはPHPログを時刻で照合した
- 実際の更新と公開表示に成功した
保存エラーを自分で切り分けられる運用環境
JSONエラーを直すための乗り換えではありません。WAF検知ログやPHP設定を現在の環境で確認できず、同じ障害の調査に毎回時間がかかる人が、管理機能と国内サポートを比較するための候補です。
広告・PRを含みます。料金・特典は公式ページで最新条件をご確認ください。
よくある質問
パーマリンクを保存すれば必ず直りますか?
rewriteの不整合なら直ることがありますが、403や500には効きません。先に状態コードを確認します。
クラシックエディターへ変えれば解決しますか?
一時的にREST APIを使う範囲が変わる場合はありますが、遮断やURL不整合は残ります。根本原因を直してください。
/wp-json/を無効化した方が安全ですか?
全面無効化するとブロックエディターやプラグインが動かなくなります。必要な権限とエンドポイント単位で制御します。
まとめ:JSONを書き直すのではなく、JSON以外を返した場所を探す
保存結果を先に確認し、REST APIの応答を開いて状態コードを読みます。404ならURLとパーマリンク、403ならWAF、500ならPHPログという順で調べ、最後に実際の投稿更新と公開表示まで成功させれば完了です。
現在のサーバーでWAF・PHPログを確認でき、今回の原因を解消できた人は、今回の操作が完了した時点で新しい契約を検討する必要はありません。新規サイトや運用環境全体を見直す場合だけ、条件を比較してください。
エックスサーバーの公式情報を確認する