WordPress「返答が正しいJSONレスポンスではありません」の原因と対処法6つ|記事が保存できない時の解決法

WordPressで記事を書き終えて「更新」や「公開」を押したら、画面の上に赤い帯で「更新に失敗しました。返答が正しい JSON レスポンスではありません。」と表示された…。

そんな経験はありませんか?

2時間かけて書いた記事が保存できへんのやけど!「JSONレスポンス」ってなんなん…?

このエラーは、WordPressを使っている人なら誰でも一度は出会う可能性がある、定番のトラブルです。

メッセージは難しそうに見えますが、原因はいくつかのパターンに絞られていて、順番に確認すれば初心者でも直せることがほとんどです。

この記事では、エラーの意味から、よくある原因と対処法6つ、やってはいけないNG対応までをやさしく解説します。

こんな人におすすめ
「記事を保存・公開しようとしたらJSONエラーが出た」
「急に記事が保存できなくなって困っている」
「エラーの意味がわからず、何から試せばいいかわからない」
「サーバーのWAFが原因かもと聞いたけど、よくわからない」

目次

「返答が正しいJSONレスポンスではありません」とはどんなエラー?

エディターとサーバーのやりとりが失敗している、という意味

WordPressの記事を書く画面(ブロックエディター)は、「保存」や「公開」を押すと、裏側でサーバーに「この内容で保存してね」とお願いを送っています。

このやりとりには「REST API(レストエーピーアイ)」という仕組みが使われていて、サーバーは結果を「JSON(ジェイソン)」というデータの形式で返事します。

レストランにたとえるなら、エディターが「注文票」を厨房(サーバー)に渡し、厨房が決まった書式の「伝票」で返事をするイメージです。

今回のエラーは、厨房から返ってきた伝票が、決まった書式になっていなかった(または途中で止められて届かなかった)という意味です。

つまり、記事の内容が悪いというより、「エディターとサーバーの間の通り道」のどこかで問題が起きている状態なのです。

書いた記事は消えた?まずは本文を避難させよう

エラーが出ている状態では、最新の内容がサーバーに保存されていない可能性があります。

ページを再読み込みしたり閉じたりする前に、まずは本文をすべてコピーして、メモ帳などに貼り付けて避難させておきましょう。

ブロックエディターの右上にある「︙」(オプション)メニューから「コードエディター」に切り替えると、ブロックの情報ごとまとめてコピーできるので便利です。

あわてて再読み込みするとこやったわ…。まずはコピーして避難やね。

まず試したい応急処置

本文を避難させたら、まずは次のかんたんな方法を試してみてください。

一時的な通信の不具合であれば、これだけで直ることもあります。

  1. 少し時間をおいて、もう一度「下書き保存」や「更新」を押す
  2. ページを再読み込みしてから保存し直す
  3. WordPressから一度ログアウトし、ログインし直してから保存する

それでもエラーが続く場合は、次の章で紹介する原因を順番に確認していきましょう。

原因と対処法6つ(よくある順)

ここでは、このエラーのよくある原因を、試しやすい順に紹介します。

ひとつ試すたびに保存できるか確認すると、どれが原因だったのかがわかりやすくなります。

① パーマリンク設定を再保存する

最初に試したいのが、パーマリンク(記事のURLの形式)の設定を保存し直す方法です。

パーマリンクの設定は、REST APIの通り道となるURLのルールにも関係しています。

このルールが何らかの理由で崩れていると、エディターのお願いがサーバーに正しく届かなくなります。

やり方はかんたんで、管理画面の「設定」→「パーマリンク」を開き、何も変更せずにそのまま「変更を保存」を押すだけです。

これでURLのルールが作り直され、エラーが解消することがあります。

② レンタルサーバーのWAFが誤検知している

日本のレンタルサーバーを使っている場合に、とても多い原因がこれです。

WAF(ワフ)とは、Webサイトへの攻撃を見張って、怪しい通信をブロックしてくれるセキュリティの仕組みです。

ところが、記事の中にプログラムのコードやiframe(埋め込みタグ)、特定の記号などが含まれていると、WAFが「攻撃かも」と勘違いして、保存のお願いをブロックしてしまうことがあります。

「コードを貼った記事だけ保存できない」「特定の文章を消すと保存できる」という場合は、WAFの誤検知を疑いましょう。

対処法は、レンタルサーバーの管理画面でWAFを一時的にOFFにして保存し、保存が終わったらすぐにONに戻すことです。

レンタルサーバーWAF設定の場所注意点
エックスサーバーサーバーパネルの「セキュリティ」→「WAF設定」で対象ドメインを選び、OFFにする反映まで最大1時間程度かかることがある
ConoHa WINGコントロールパネルの「サイト管理」で対象サイトを選び、「WAF」をOFFにする専用プラグインを使えばWordPress管理画面からも設定できる
ロリポップ!「セキュリティ」→「WAF設定」で対象ドメインの「無効にする」を押すすぐには反映されないため、5分ほど待ってから試す

※管理画面の表記は変更されることがあります。最新の手順は各レンタルサーバーの公式マニュアルでご確認ください。

WAFをOFFにしている間は、サイトを守る機能が弱まった状態です。

作業はできるだけ短時間で済ませ、ONに戻すのを忘れないようにしましょう。

守ってくれる番人が、真面目すぎて記事まで止めてもうてたってことか。OFFにしたら、ちゃんと戻すんやで、わたし!

③ WordPressアドレスとサイトアドレスが食い違っている

サイトをSSL化(http から https に変更)した後や、ドメインを変更した後にエラーが出始めた場合は、URLの設定を確認しましょう。

管理画面の「設定」→「一般」にある「WordPressアドレス(URL)」と「サイトアドレス(URL)」が、実際のサイトのURLと一致しているかを見ます。

たとえば、サイトは「https://」で表示されているのに、設定が「http://」のままになっていると、エディターとサーバーのやりとりがうまくいかないことがあります。

ただし、この2つの値を間違えて保存すると管理画面に入れなくなることがあるため、変更する前に現在の値をメモしておくと安心です。

もし管理画面に入れなくなってしまった場合は、こちらの記事を参考にしてください。

④ プラグインが干渉している

セキュリティ系やキャッシュ系のプラグインの中には、REST APIへのアクセスを制限する機能を持つものがあります。

「プラグインを追加・更新した直後からエラーが出るようになった」という場合は、プラグインが原因の可能性が高いです。

確認するときは、プラグインを1つずつ停止して、そのたびに保存できるか試します。

停止して保存できるようになったら、そのプラグインが原因です。

原因がわかったら、そのプラグインの設定でREST APIの制限を見直すか、別のプラグインへの乗り換えを検討しましょう。

プラグイン選びの注意点については、こちらの記事でくわしく解説しています。

⑤ テーマやfunctions.phpでREST APIが止められている

プラグインを停止しても直らない場合は、テーマが原因かもしれません。

一時的にWordPressの標準テーマ(「Twenty Twenty-Five」など)に切り替えて、保存できるか確認してみましょう。

また、ネットの記事を参考にfunctions.phpへコードを追加したことがある場合は、REST APIを無効にする記述が入っていないかも確認します。

たとえば、次のような「rest_authentication_errors」を使った記述があると、エディターの保存まで止まってしまうことがあります。

PHP
// REST APIへのアクセスを制限する記述の例
add_filter( 'rest_authentication_errors', function( $result ) {
    return new WP_Error( 'rest_disabled', 'REST API is disabled.' );
} );
PHP

このような記述を見つけたら、ファイルのバックアップを取ってから削除するか、ログインしているユーザーは対象外にするなどの修正をしましょう。

なお、functions.phpを編集するときは、親テーマを直接いじらずに子テーマを使うのが基本です。

⑥ .htaccessファイルが壊れている

.htaccess(ドットエイチティーアクセス)は、サーバーの動きを決める設定ファイルで、WordPressのURLのルールもここに書かれています。

プラグインやサーバーの設定変更などで、この中身が崩れてしまうと、REST APIの通り道がふさがれることがあります。

FTPソフトやサーバーのファイルマネージャーで、WordPressをインストールしたフォルダにある.htaccessを開き、WordPress部分の記述を確認しましょう。

一般的な設定では、WordPress部分は次のようになっています。

Plaintext
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Plaintext

中身が明らかに崩れている場合は、元のファイルを必ずパソコンに保存してから、「設定」→「パーマリンク」で「変更を保存」を押すと、WordPressが.htaccessを書き直してくれることがあります。

.htaccessにはサーバー会社やプラグインが追加した記述が含まれていることもあるので、WordPress部分以外は消さないように注意してください。

FTPソフトの使い方に自信がない方は、こちらの記事もどうぞ。

原因を突き止めるコツ

上の方法を片っぱしから試す前に、原因のあたりをつけておくと、解決までの時間を短くできます。

サイトヘルスでREST APIの状態を確認する

WordPressには、サイトの健康状態をチェックできる「サイトヘルス」という機能があります。

管理画面の「ツール」→「サイトヘルス」を開き、「ステータス」タブを見てみましょう。

REST APIに関する問題が見つかっている場合は、ここに表示されることがあります。

ブラウザの開発者ツールでエラー番号を見る

少し上級者向けですが、ブラウザの開発者ツールを使うと、サーバーから何が返ってきたかを直接確認できます。

Google Chromeの場合は、次の手順で確認できます。

  1. エディターの画面でキーボードの「F12」キーを押し、開発者ツールを開く
  2. 上部の「ネットワーク」(Network)タブを選ぶ
  3. その状態で、もう一度「更新」や「下書き保存」を押す
  4. 一覧に赤く表示された行をクリックし、「ステータス」の番号を確認する

表示された番号によって、疑うべき原因の目安がわかります。

ステータス番号意味疑うべき原因
403アクセスが拒否されたWAFの誤検知、セキュリティ系プラグイン
404通り道が見つからないパーマリンク設定、.htaccess
500サーバー内部でエラーが起きたプラグインやテーマのエラー、.htaccess
200なのにエラー返事は届いたが中身が崩れているプラグインやテーマが余計な文字を出力している

500エラーについては、こちらの記事でくわしく解説しています。

プラグインやテーマのエラー内容をさらにくわしく調べたいときは、デバッグモードを使う方法もあります。

やってはいけないNG対応

早く直したい気持ちから、かえってトラブルを大きくしてしまうこともあります。

次のような対応は避けましょう。

WAFをOFFにしたまま放置する

NG例:保存できるようになったので、WAFをOFFにしたままにしておく。

OK例:保存が終わったらすぐにWAFをONに戻す。何度も同じ記事で引っかかる場合は、サーバー会社の案内に従って、特定のルールだけを除外する方法を検討する。

WAFは本来サイトを守るための仕組みなので、切りっぱなしにすると攻撃を受けやすくなります。

バックアップを取らずにファイルを削除・編集する

NG例:ネットの記事を見て、.htaccessやfunctions.phpをいきなり削除・上書きする。

OK例:編集する前に、元のファイルをパソコンにダウンロードして保存しておく。うまくいかなければ元に戻せる状態で作業する。

バックアップがあれば、万が一サイトが表示されなくなってもすぐに元の状態に戻せます。

クラシックエディターに切り替えてそのままにする

NG例:プラグイン「Classic Editor」で旧エディターに戻したら保存できたので、原因を調べずにそのまま使い続ける。

OK例:急ぎの場合の一時しのぎとして使い、落ち着いたら原因を突き止めてブロックエディターに戻す。

クラシックエディターはREST APIを使わない仕組みのため、保存できることがありますが、根本的な原因は残ったままです。

REST APIはエディター以外の機能でも使われているため、放置すると別のトラブルにつながる可能性があります。

とりあえず保存できたら満足しそうやったけど、原因はちゃんと突き止めんとあかんのやね。

まとめ

「更新に失敗しました。返答が正しい JSON レスポンスではありません。」は、エディターとサーバーのやりとりがどこかで失敗していることを知らせるエラーです。

エラーが出たら、まず本文をコピーして避難させ、次の順番で確認してみてください。

  1. パーマリンク設定を再保存する
  2. レンタルサーバーのWAFを一時的にOFFにして試す(終わったら必ずONに戻す)
  3. WordPressアドレスとサイトアドレスを確認する
  4. プラグインを1つずつ停止して確かめる
  5. テーマやfunctions.phpの記述を確認する
  6. .htaccessの中身を確認する(必ずバックアップしてから)

特に日本のレンタルサーバーでは、パーマリンクの再保存とWAFの確認で解決するケースが多いので、まずはこの2つから試してみましょう。

今後のトラブルを防ぐためには、WordPress本体やプラグインを更新する前にバックアップを取る習慣をつけておくのもおすすめです。

パーマリンクを保存し直したら直ったわ!こんなかんたんなことで直るんやね。

よくある質問(FAQ)

エラーが出たとき、書いた記事は消えてしまいますか?

画面上の内容はすぐには消えませんが、最新の内容がサーバーに保存されていない可能性があります。ページを閉じたり再読み込みしたりする前に、本文をコピーしてメモ帳などに避難させておきましょう。

特定の記事だけエラーが出るのはなぜですか?

記事の中にプログラムのコードや埋め込みタグなどが含まれていて、レンタルサーバーのWAFが攻撃と誤って判断している可能性が高いです。WAFを一時的にOFFにして保存できるか確認してみてください。

WAFをOFFにしても大丈夫ですか?

OFFにしている間はサイトを守る機能が弱まるため、保存などの作業が終わったらすぐにONに戻しましょう。何度も同じ記事で引っかかる場合は、サーバー会社の案内に従って特定のルールだけを除外する方法を検討してください。

画像をアップロードしたときにも同じエラーが出ます。

画像のアップロードでもエディターとサーバーのやりとりが発生するため、同じエラーが出ることがあります。この記事の対処法に加えて、ファイルサイズの上限や画像の形式も確認してみてください。

クラシックエディターに切り替えれば解決しますか?

クラシックエディターに切り替えると保存できる場合もありますが、根本的な原因は残ったままです。急ぎのときの一時しのぎにとどめ、原因を突き止めてから元に戻すのがおすすめです。

すべて試しても直りません。どうすればいいですか?

サイトヘルスの情報や、開発者ツールで確認したエラー番号をメモしたうえで、契約しているレンタルサーバーのサポートに問い合わせてみましょう。具体的な情報があると、原因を早く特定してもらいやすくなります。

関連記事

ほかのWordPressのエラーについても知りたい方は、こちらの記事もあわせてご覧ください。

参考リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次