ワードプレスで保存すると「返答が正しい JSON レスポンスではありません」となり見出しが自動下書きとなる現象に対処
ワードプレスは今やホームページのツールとして一般化しています。
特に有名なブロガーさんほどワードプレスを利用されておられます。
かくいうこのブログもワードプレスです。
ある日、ワードプレスに書いた記事が保存できなくなる現象が発生しました。
記事が全く投稿できなくなり、焦りました。
いろいろ調べて対処できましたので、忘備録として記録いたします。
現象はこのような感じです。(公開に失敗しました。エラーメッセージ:返答が正しいJSONレスポンスではありません。)
ワードプレスで記事を入力し、保存してみたところ、以下のようなエラーになりました。
見たこともないエラーが発生しました。
(返答が正しいJSONレスポンスではありません)
そのまま一覧表示に戻ってみると、このような表示なっていました。
タイトルが「自動下書き」となっています。
さらに、中身を見てみると、
書き込んだテキストが空っぽになっていました。
何度保存しても、下書き保存、公開保存いずれもエラーなりました。
原因は.htaccessの不備
「JSON レスポンスではありません」というエラーは、ググってみるとワードプレス5.3以降発生しているようでした。
また原因も多岐にわたり、今回の原因が、必ずしも他の方の原因と一致しているとは言えない感じでした。
つまり「 JSON レスポンスではありません 」エラーの原因は多数ある。
ということです。
ググっても答えが見いだせなかったので、思い当たるところを一つずつ調べてゆきました。
すると、ひとつ気になるところがありました。
それがこの.htaccessの中身です。
.htaccessの中身が空になっていました。
wordplessの仮想フォルダなどは.htaccessを駆使して実現しています。
なのに、.htaccessが空欄になっているのはおかしいと感じ、テスト環境のwordplessの.htaccessと比較したところ、明らかに違っていました。
バックアップから.htaccessを手動で復元に戻して直りました。
.htaccessが空欄になっているということは、ワードプレスが誤動作するということです。
ひとまずテスト環境の.htaccessから内容を復元し、.htaccessに直接記述しました。
この状態で記事の保存を行いました。
無事記事が保存できるようになり、めでたしめでたしと思いきや、
この問題は.htaccessの記述だけでは解決していませんでした。
何日かしてまた記事が保存できなくなる現象が発生しました。
直った直ったと安心しきっていましたが、数日後またJSONレスポンスエラーが発生するようになりました。
そして.htaccessを見ると案の定空欄になっていました。手動で.htaccessを空欄にしていません。ということは・・・
ワードプレスが.htaccessを空欄にしている!
ということになります。
何か振り出しに戻った感がありましたが、気をお取り直して再度調べてみました。
ググりましたがさっぱりでした・・・・。
エラーが発生する前に、ワードプレスの何を操作したかを思い出しました。
ワードプレスに原因があることは間違いなさそうです。
ただ、何のタイミングで.htaccessの内容を消されてしまったかがわかりません。
もし定期的に.htaccessの内容が消えるようであれば、致命傷です。
そこで、エラーが発生する前に操作した内容をひとつひとつ洗い上げました。
それらを一つ一つ検証していったところ、原因を発見しました。
それがこちらです。
原因は、パーマリンク設定で.htaccessの内容が消えていました。
パーマリンク設定は、記事URLの形式を設定する機能です。
例えば、URLを日付のようにしたり、カテゴリ名のようにしたりなど、URLフォルダ名を変更することができます。
このパーマリンク設定で.htaccessが消えるものがありました。
それがこちらです。
パーマリンクを基本で保存すると、.htaccessの中身が消えました。
どうやら、ワードプレスの不具合のようです。
ちなみに、パーマリンクを他の項目で保存したらどうなるかも試してみました。
基本以外で保存すると、.htaccessが正しく設定されました。
どうやら、カスタム構造の入力欄に、何かしら値が入っていると大丈夫のようです。
記事保存ができず「自動下書き」になるようならばパーマリンクの設定の確認を
ワードプレスでも現象の発生するものと、発生しないものがありましたが、違いはパーマリンク設定でした。
現象のでるワードプレスは、パーマリンクが「基本」になっていました。
テスト環境で試しても、同様に.htaccessの中身が空欄になったので、再現性はかなり高いです。
もし同様の現象が発生しているようならば、パーマリンクが基本になっていないか確認し、もし基本になっているならば、基本以外に設定してみるとよいです。
検証したワードプレスは5.3.2です。
現時点では最新のバージョンのため、どの環境でも現象が発生する可能性があります。
サーバーによっては発生しない場合もあるかもしれませんが、さくらサーバーでは現象が発生しました。
おそらくワードプレスの以降のアップデートで改善されると思いますが、しばらくはパーマリンクを「基本」以外に設定です。
追記:2020/3/27
本日同じ環境で再検証したところ、 特になにもしていませんが現象が改善していました。
本記事は実際に起こったことを後日、スクリーンショットをとることも兼ねxamppで新たに環境を作成し、再現検証を行っております。
本日検証に使ったxampp環境を起動したところ、何か通信をしているような様子が見られました。(WPバージョンはそのまま)
その後同じ操作をしたところ現象が再現しなくなっていました。
また新たにクリーンインストールも試しましたが、現象は発生しませんでした。
ちなみに、.htaccessが空欄であっても、記事保存時に「JSON レスポンスエラー」は発生しませんでした。
ワードプレスの仕様では、パーマリンクの基本設定で.htaccessが空欄になること自体は正しい動作のようです。ただ、.htaccessが空欄の時に「JSONレスポンスエラー」になることが問題であったようです。
結局何が原因だったのか、再現しなくなったため不明です。
ただ検証のためだけに準備した環境で、今回プラグイン等は検証時のままでテストしました。つまりプラグインの問題ではありません。
何か新しいことが判明したら、ブログで報告できればと思います。
今回は原因が二重にありなかなか手ごわかったです。
直接の原因は.htaccessが空欄であったことでした。
ただ、そこで安心してしまい、本当の原因を突き止め切れていませんでした。
この段階で気づくべきでした。
なぜ.htaccessが空欄になっていたのだろうか?と
今回のことで、ワードプレスは.htaccessの書き換えも行っているということを知りました。まだまだ学ぶべきことが多々あります。
本記事がまたお役に立てば幸いです。