WordPress「返答が正しい JSON レスポンスではありません」の原因と対処法
直らないときは、無料でご相談いただけます(直らなければ料金はいただきません)。
結論:WordPressの編集画面で「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」と出るのは、保存などの通信で、サーバーからの返事を、WordPressが読める形(JSON)として読み取れなかったときです。返事がエラーの画面や、アクセスを止めたことを知らせる画面に置き換わっていたり、空だったりすると、この表示になります。
原因には、サーバーのWAF(不正なアクセスを止める仕組み)が本文の一部に反応した場合や、パーマリンクの設定がサーバーに伝わっていない場合などがあります。まず、書きかけの文を残してから、どこで止まっているかを確かめます。
目次
この記事は、WordPressのトラブル解決を受け付けているWP-ingが、原因の見分け方と対処法をまとめたものです。
出る画面
投稿や固定ページの編集画面(ブロックエディター)の上に、次のように出ます。
- 保存・更新のとき:「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」
- はじめて公開するとき:「公開に失敗しました。 返答が正しい JSON レスポンスではありません。」
- 英語の表示では「Updating failed. The response is not a valid JSON response.」
ブロックエディターは、保存するときに、画面の裏でサーバーの「REST API」という窓口へ内容を送り、決まった形(JSON)の返事を受け取っています。その返事が、エラーの画面や「ページが見つかりません」の画面など、JSONとして読めないものになると、この表示になります。保存のほか、画像を追加したときなどに出ることもあります。
保存のときではなく、編集画面を開いた時点で真っ白になる場合は、真っ白の記事の「編集画面だけが真っ白のとき」をご覧ください。
なお、「サーバーから正しい応答がありませんでした。」と出る場合は、返事そのものが届いていない状態です。インターネットの接続や、サーバーが動いているかを先に確かめます。
「更新に失敗しました。」のあとに別の文が出る場合は、更新できないときの記事をご覧ください。
どこで止まっているかを確かめる
- 書きかけの文を、メモ帳などに貼り付けて残します。画面右上の「︙」(オプション)の「すべてのブロックをコピー」で、まとめてコピーできます。
- 出始める直前に変えたこと(プラグインやテーマの追加・更新、
functions.phpの編集、サーバーの設定の変更、サーバーの引っ越しなど)を思い出します。 - 次の表の順に確かめます。
| 確かめること | 結果 | 考えられること |
|---|---|---|
| 新しい投稿を作り、短い文だけで「下書き保存」してみる | 短い文なら保存できる | 本文の内容などに関係している可能性があります。サーバーのWAFが、本文の中の文字(プログラムのコードなど)に反応していないかを確かめます → WAFを確かめる |
ブラウザで https://(サイトのアドレス)/wp-json/ を開く(パーマリンクが「基本」のときは https://(サイトのアドレス)/?rest_route=/) |
英数字や記号が並んだ文字(JSON)が出る | 窓口は開いています(ただし、保存の通信まで通るとは限りません)。本文の内容・WAF・プラグインを確かめます |
| 「ページが見つかりません」(404)が出る | パーマリンクの設定がサーバーに伝わっていない可能性 → パーマリンクを保存し直す | |
| 「403 Forbidden」など、アクセスを拒否した画面が出る | WAFやセキュリティのプラグインが止めている可能性 → WAF・プラグインを確かめる(「403 Forbidden」の記事) | |
| サーバーのエラー(500 など)が出る | サーバー側やプログラムのエラー → 500エラーの記事をご覧ください | |
| 「ツール」→「サイトヘルス」の「ステータス」を見る | 「REST API でエラーが発生しました」「REST API で予期しない結果が発生しました」が出ている | 窓口への接続に問題があります。項目を開くと、詳しい内容が出ます(出ていなくても、保存が通るとは限りません) |
サーバーのWAFが止めているとき
多くのレンタルサーバーには、WAF(ウェブアプリケーションファイアウォール)という、不正なアクセスを止める仕組みがあります。本文に、プログラムのコードや、攻撃に使われる文字の並びに似たものが含まれていると、ふつうの保存でも止めてしまうことがあります(誤検知)。このとき、WordPressには拒否の画面が返るため、この表示になります。
- サーバーの管理画面で、WAFのログ(止めた記録)を見ます。保存した時刻と、対象のアドレス(
wp-jsonを含むものなど)が合う記録があれば、WAFが原因の可能性が高いです。 - 止められた項目を除外(許可)できるサーバーでは、止められた内容と、除外するとどこまで許可されるかを確かめたうえで、必要なものだけを除外します。
- 除外ができない場合は、そのサイトのWAFを一時的に無効にし、反映を待ってから保存を試します。
- 確かめが終わったら、保存できたかどうかにかかわらず、WAFを元の設定に戻します。
ログを見られないサーバーや、記録が翌日にならないと出ないサーバーもあります。記録が見当たらなくても、WAFが原因ではないとは言い切れません。
| サーバー | 設定の場所 |
|---|---|
| エックスサーバー | サーバーパネル「セキュリティ」の「WAF設定」。ドメインを選び、項目ごとに設定します。反映には時間がかかることがあります(新しいサーバーパネルでは最大30分程度と案内されています) |
| ConoHa WING | 「サイト管理」→「サイトセキュリティ」→「WAF」。「表示切替」で「ログ」を選ぶと止めた記録が出て、項目ごとに「除外」できます |
| ロリポップ! | ユーザー専用ページ「WAF設定」。「ログ参照」で記録を見られます(ハイスピードプラン・エンタープライズプランではログ参照は使えません) |
| さくらのレンタルサーバ | コントロールパネル「セキュリティ」→「WAF設定ドメイン」。止めた記録は前日の分が表示されるため、その日のうちは見られないことがあります |
WAFは、サイトを守るための大切な仕組みです。確かめが終わったら、元の設定に戻してください。何度も同じ箇所で止まる場合は、本文の書き方を変えるか、サーバー会社にご相談ください。
また、エックスサーバーの「WordPressセキュリティ設定」には、国外からの REST API へのアクセスを制限する設定があります。海外から編集しているときに保存できない場合は、この設定も確かめます。
パーマリンクを保存し直す
/wp-json/ を開いて「ページが見つかりません」と出る場合は、WordPressの住所の決まり(パーマリンク)が、サーバーに伝わっていないことがあります。サーバーの引っ越しや、.htaccess を書き換えた後などに起こることがあります。
- パーマリンクの画面は、開いただけでも
.htaccessを書き直すことがあります。開く前に、サーバーの.htaccessを手元に写して残します。 - 管理画面の「設定」→「パーマリンク」を開きます。
- 何も変えずに「変更を保存」を押します。
多くのレンタルサーバーのように .htaccess を使うサーバーで、WordPressがファイルに書き込める場合は、これで .htaccess の中の WordPress の部分が書き直されます。「.htaccess ファイルを更新してください。」と出た場合は、WordPressがファイルに書き込めなかったため、ファイルの更新や、サーバー会社への確認が必要になることがあります。分からないときは、ご相談ください。
プラグインやファイルの編集を確かめる
セキュリティのプラグインや、表示を速くする仕組み(キャッシュ)のプラグインの中には、REST API への接続を止める設定を持つものがあります。直前に入れた・更新した・設定を変えたプラグインがあれば、止めて保存を試します。止めている間は、そのプラグインの機能も止まるため、影響を確かめながら進めます。作業の前には、バックアップを取っておきます。
テーマの functions.php などのファイルを編集した後に出始めた場合は、ファイルの先頭の <?php より前や、終わりの ?> の後に、余計な文字が入っていないかを確かめます。JSONと関係のない文字やHTMLが返事に出てしまうと、JSONとして読めなくなることがあります。分からなければ、編集する前のファイルに戻します。ファイルの先頭や最後の確かめ方は、「headers already sent」と出るときの記事にもまとめています。
画像などを追加したときに出るとき
画像や動画を追加したときに出る場合は、ファイルの大きさが上限を超えるなどして、サーバーがJSONではないエラーの画面を返していることもあります。上限の確かめ方と上げ方は、「辿ったリンクは期限が切れています」の記事で紹介しています。大きな画像の処理でメモリが足りなくなる場合は、メモリ不足の記事もご覧ください。
自分で進めるのが難しいとき
次のような場合は、無理に作業を進めず、ご相談ください。
- WAFの記録が見当たらない・どの設定を変えればよいか分からない
- パーマリンクを保存し直しても、
/wp-json/が開けない - プラグインを止めると、サイトの表示や機能に影響が出そうで不安
- どの記事でも保存できず、更新作業が止まっている
WP-ingでは、このエラーをはじめ、WordPressの不具合の修理を承っています。状況を確かめて、作業の前に料金をご案内します。直らなければ料金はいただきません。お支払いは、直ったことを確かめていただいてからです。
よくある質問
書いていた文は消えてしまいましたか?
この表示だけでは、保存できたかどうかは分かりません。ただ、画面を閉じたり読み込み直したりしなければ、書いた文は編集画面に残っています。まずは文をメモ帳などに貼り付けて残してから、別のタブで「投稿」の一覧を開き、更新日時などで保存されたかを確かめましょう。WordPressが自動で保存した内容が残っている場合もあります。
WAFを無効にしたままでもよいですか?
WAFは、不正なアクセスからサイトを守るための仕組みです。確かめのために一時的に無効にした場合は、作業が終わったら元の設定に戻すことをおすすめします。止められた項目だけを除外できるサーバーでは、除外する範囲を確かめたうえで、必要なものだけを除外します。