ウィジェット保存で「JSONレスポンスではありません」エラー|原因と直し方【飯田市 ホームページ制作】

起きていたこと(現象)

「外観 → ウィジェット」を開き、写真と文字だけを削除して保存しようとすると、次のようなエラーが表示される状態でした。

  • 「正しい JSON レスポンスではありません」

操作しているのは削除だけで、特殊なコードを入れたり、変わった設定をしたりしたわけではありません。

まず知っておいていただきたいこと

このエラーは、削除した写真や文字の中身が原因で出るものではありません。

WordPressのブロック型ウィジェット編集画面(「外観 → ウィジェット」)は、保存時にREST APIという仕組みを使って管理画面とサーバーがやり取りをしています。そこで正常な応答(JSON)が返ってこないと、内容に関係なくこの表示になります。つまり「何を消したか」ではなく、「保存の通信がどこかで止まっている」状態です。

まずこの前提を知っておくだけでも、慌てて別のブロックを作り直したり、内容を疑って触り直したりせずに済むと思います。

対処の手順

危険な操作(プラグインの一括停止やテーマ変更、PHPバージョンの更新など)は、この時点ではまだ行わないでください。 表側の表示が崩れる原因になる場合があります。まずは影響の少ない手順から順に試します。

手順1:編集内容を控えて、ログインし直す

  1. 編集しようとしていた内容(削除したい箇所、変更したいテキストなど)をメモしておく
  2. 管理画面のタブをすべて閉じる
  3. WordPressから一度ログアウトする
  4. 再ログインし、「外観 → ウィジェット」を開き直す
  5. もう一度、同じ操作をして保存する

ログイン状態や、保存に使う一時的な認証情報が古くなっていただけの場合、これで直ることがあります。管理画面を長時間開いたままにしていると起こりやすい症状です。

手順2:サイトヘルスで状況を確認する

手順1で直らない場合は、次の場所を確認します。

「ツール」→「サイトヘルス」→「ステータス」

ここで、REST APIやループバックリクエストに関する項目でエラーが出ていないか確認します。WordPress公式でも、REST API関連の不具合はサイトヘルスの画面で確認できると案内されています。

私が対応したケースでは、サイトヘルスの推奨項目に「停止中のプラグインの削除」「PHPバージョンの更新」などは表示されていましたが、これらは今回のエラーの直接原因ではありませんでした。優先度の低い改善項目と、目の前のエラーの原因は別、というケースは意外とあります。サイトヘルスに何か表示されていても、今すぐ更新や削除をする必要はありません。

手順3:「外観 → カスタマイズ → ウィジェット」から編集し直す

ここが今回、実際に解決した手順です。

  1. 管理画面から「外観」→「カスタマイズ」を開く
  2. メニューの中から「ウィジェット」を選ぶ
  3. 該当のウィジェットエリア(サイドバーやフッターなど)を開く
  4. 削除したい写真・文字のブロックを選択し、「︙」から「ブロックを削除」
  5. 「公開」を押して保存する

「外観 → ウィジェット」と「外観 → カスタマイズ → ウィジェット」は、見た目は近くても別の編集画面です。今回はブロック型のウィジェット編集画面(外観 → ウィジェット)側だけで保存が失敗しており、カスタマイズ側からの保存では問題なく完了しました。

手順4:それでも保存できない場合

「Classic Widgets」というWordPress公式プラグインを使う方法があります。

  1. 「プラグイン」→「新規プラグインを追加」
  2. 「Classic Widgets」で検索してインストール
  3. 有効化する(設定は不要です)

有効化すると、「外観 → ウィジェット」がブロック型ではない、以前のシンプルな管理画面に戻ります。サイトの表側のデザインを変更するプラグインではなく、あくまで管理画面側の編集方法を旧式に戻すためのものです。WordPress公式も、ブロック型のウィジェット編集をやめたい場合の選択肢として案内しています。

仮説と検証

エラーの原因になりやすいものとして、私は次のような可能性を考えていました。

  • ログイン・認証情報が古くなっている
  • セキュリティプラグインやサーバー側のWAF・ModSecurityが、保存通信(/wp-json/ 以下の通信)を止めている
  • キャッシュの影響

今回のケースでは、手順1(ログアウト→再ログイン)では改善せず、サイトヘルスにもREST API関連の明確なエラー表示はありませんでした。そのため、セキュリティプラグインやサーバー側の遮断が疑わしいと思いましたが、プラグインを一つずつ停止して切り分けるより先に、影響の少ない「別の編集画面(カスタマイズ側)から保存する」方法を試したところ、問題なく保存できました。

真因

「外観 → ウィジェット」のブロック型編集画面での保存処理だけが、何らかの理由で失敗していたというのが今回の状況です。原因を完全に一つに断定はできませんが、セキュリティプラグインやサーバー側の設定が、ブロックエディタ特有の保存リクエストの一部を止めていた可能性があると思います。実際、ウィジェット保存時の通信がサーバー側の設定で止められる事例は他にもあります。

「カスタマイズ→ウィジェット」経由なら保存できたことから、少なくとも管理画面へのログインやユーザー権限自体には問題がなかったことが分かります。

運用の教訓

  • ウィジェットが保存できないときは、まず「何を消したか」ではなく「保存の通信」を疑う
  • 「外観 → ウィジェット」で保存できないときは、「外観 → カスタマイズ → ウィジェット」からも試してみる。編集画面が違うだけで、保存できることがある
  • サイトヘルスの推奨項目は、今回のエラーと直接関係ない場合もある。表示されているからといって、慌ててPHP更新やプラグイン削除をする必要はない
  • どうしても保存できないときは、Classic Widgetsで編集画面自体をシンプルなものに戻すという選択肢もある
  • プラグインの一括停止やテーマ変更は、表側の表示が崩れるリスクがあるため、最後の手段として考える

似たような表示で困っている方の参考になれば嬉しいです。

Home
サービス
制作実績
お客様の声
デザイナー紹介
問合せ