WordPressの「返信が正しい JSON レスポンスではありません」エラーの修正:実践ガイド

中級📝 WordPress2026-05-26| WordPress 5.0+ (Gutenbergエディタ), Linux (Ubuntu/Debian), Nginx/Apache, PHP 7.4/8.x

Error Message

Updating failed. The response is not a valid JSON response.
#wordpress#gutenberg#json#rest-api#トラブルシューティング

絶望の赤いバナー:Gutenbergが失敗するとき

大事なブログ記事の推敲に3時間も費やしたとしましょう。「更新」ボタンを押し、緑色の成功通知を期待します。しかし、代わりに赤いバナーが表示されます:更新に失敗しました。返信が正しい JSON レスポンスではありません。 作業内容は保存されず、エラーにはその理由が何も記されていません。

現在のWordPressは、REST API経由でコンテンツを保存します。APIは、返ってくるデータが特定のクリーンな構造であることを期待しています。もしサーバーがデータの代わりにPHPの警告、404ページ、あるいは「近日公開」の画面などを返すと、エディタはクラッシュします。これは通常、ブラウザとサーバー間の通信遮断を示唆する、システム内部の不具合です。

根本原因の特定

これを修正するには、推測を止めてデータフローを確認する必要があります。私の経験では、これらのケースの90%は「ネットワーク」タブを確認することで解決します。

1. ブラウザ開発者ツールの活用

ブラウザの開発者ツール(F12またはCmd+Option+I)を開き、**ネットワーク(Network)**タブを選択します。WordPressでもう一度「更新」をクリックしてください。新しいエントリ(通常は赤い行)が表示されます。これは/wp-json/wp/v2/posts/101のようなエンドポイントをターゲットにしています。

  • 404 Not Found: パーマリンク構造が壊れている可能性があります。
  • 403 Forbidden: セキュリティファイアウォール(CloudflareやModSecurityなど)が保存リクエストをブロックしています。
  • 500 Internal Server Error: 投稿の処理中にサーバーがクラッシュしました。多くの場合、PHPのmemory_limit不足が原因です。
  • 200 OK(それでも失敗する場合): これはよくあるケースです。サーバーは成功コードを返しましたが、ファイルの先頭に「Notice: Undefined index」などの通知が追加されており、JSONのフォーマットが崩れています。

2. 隠されたメッセージを読み取る

リスト内の失敗したリクエストをクリックします。**レスポンス(Response)**サブタブに移動します。もし<!DOCTYPE html>で始まるHTMLコードが見えるなら、サーバーは生データの代わりにウェブページを返しています。これが決定的な証拠です。

現場で検証済みの解決策

解決策 A:パーマリンクの「リセット」

URLの内部マップが混乱することがあります。設定 > パーマリンクに移動し、単に変更を保存をクリックしてください。設定を変更する必要はありません。これにより、WordPressは.htaccessまたはNginxのルールを強制的に書き換え、REST APIのパスが即座に復旧することがよくあります。

解決策 B:HTTPSの不一致を解消する

最近SSL証明書を追加した場合、サイトが「混在コンテンツ(Mixed Content)」ループに陥っている可能性があります。これは、管理画面はHTTPSなのにAPIがHTTP経由で接続しようとしたときに発生します。Cloudflareのようなプロキシを利用しているサイトでこれを修正するには、wp-config.phpの最上部に以下のスニペットを追加します:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

解決策 C:問題のあるプラグインを見つける

コーディングが不適切なプラグイン1つで、バックグラウンドにPHPの警告が出力されることがあります。この余計なテキストがJSONレスポンスを「汚染」します。

  • Classic Editorプラグインをインストールしてみてください。エラーが消えるなら、テーマやプラグインとREST APIの干渉が原因であることは間違いありません。
  • Wordfenceや「All In One WP Security」などのセキュリティプラグインを一時的に無効にします。ログを確認し、/wp-json/パスへの「ブロックされたリクエスト」がないかチェックしてください。

解決策 D:PHPエラーの非表示化

本番サイトでは、ユーザーにエラーを表示すべきではありません。WP_DEBUG_DISPLAYがオンになっていると、APIレスポンスにエラーテキストが直接挿入されてしまいます。wp-config.phpでオフにしましょう:

// 推奨される本番環境の設定
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);

これによりエディタからはエラーが隠されますが、後で確認できるようにwp-content/debug.logに保存されます。

検証:修正されたことを確認する方法

ページをリロードするだけでは不十分です。ブラウザでyourdomain.com/wp-json/にアクセスしてください。整理されたコードのようなテキストの塊が表示されるはずです。もし「404」や「メンテナンス中」のページが表示されるなら、APIは依然としてブロックされており、「正しい JSON レスポンスではありません」エラーは解消されません。

プロのヒント: レスポンスが乱雑に見える場合は、そのブロック全体をコピーして、ToolCraftのJSON Formatter & Validatorに貼り付けてください。データの中に隠れているPHPエラーメッセージの正確な行を特定してくれるため、当てずっぽうな調査に時間を費やす必要がなくなります。

最後に

「返信が正しい JSON レスポンスではありません」というエラーは、JSONそのものが原因であることは稀です。これはサーバーが「ノイズ」を発していることの兆候です。まずはネットワークタブを確認し、PHPの通知を非表示にし、パーマリンクを最新の状態に保ちましょう。多くの場合、解決策は「変更を保存」をクリックするだけで済みます。

Related Error Notes