在WordPress后臺編輯發(fā)布或更新文章時,如果碰到“此響應(yīng)不是合法的JSON響應(yīng)”的問題如何解決?站長幫查閱了百度搜索中的部分結(jié)果,這些都沒說到重點,有些給出的方法雖可以解決此問題,但會造成其它問題。
所以本文將詳細(xì)介紹如何排查此類故障,且說明故障原因。
錯誤“更新失敗。此響應(yīng)不是合法的JSON響應(yīng)”通常發(fā)生在 WordPress 塊編輯器處理內(nèi)容時。當(dāng)嘗試將媒體文件添加到站點時,也可能會發(fā)生這種情況,特別是如果其直接提交到塊編輯器中的塊。
是什么原因?qū)е逻@種情況發(fā)生呢?
當(dāng)編輯網(wǎng)站頁面或帖子時,它會連接到服務(wù)器進(jìn)行響應(yīng)。網(wǎng)站使用 JavaScript 以 JSON 格式發(fā)送此響應(yīng),如果 JavaScript 代碼有錯誤或者 WordPress 無法連接到服務(wù)器,將收到此錯誤消息。
簡而言之,如果編輯器無法與服務(wù)器正常通信,就會提示此錯誤??赡苡捎诟鞣N原因?qū)е碌模踔涟?URL 設(shè)置不正確或永久鏈接損壞等基礎(chǔ)問題。
接下來看看如何修復(fù) WordPress 中的無效 JSON 錯誤。
在開始之前,強烈建議先備份WordPress網(wǎng)站,萬一出現(xiàn)其它故障,可以將網(wǎng)站恢復(fù)到以前的狀態(tài)。
既然已經(jīng)了解了“此響應(yīng)不是合法的JSON響應(yīng)”的含義,那么開始介紹排查解決此錯誤消息的方法。
此錯誤的常見原因之一是 URL 設(shè)置不正確。如果不小心使用了 HTTP 而不是 HTTPS(站點已啟用了 SSL 證書),則會導(dǎo)致混合內(nèi)容錯誤,即 HTTP 和 HTTPS 內(nèi)容同時傳輸?shù)?Web 瀏覽器。
如果啟用了SSL,兩個URL均使用https協(xié)議。
WordPress固定鏈接(或永久鏈接)是每個帖子和頁面的唯一URL。但如果弄亂了固定鏈接設(shè)置,WordPress 編輯器將不會收到有效的 JSON 響應(yīng)并導(dǎo)致錯誤出現(xiàn)。
如果以上項沒有問題,或者修復(fù)后故障依然存在,請繼續(xù)往下看。
如果以上方法都不起作用,基本可以判斷是主題或是插件導(dǎo)致問題。WordPress開發(fā)者都很清楚,WordPress提供了一系列鉤子,其中有些鉤子是在編輯器保存或更新時觸發(fā)執(zhí)行的。如果執(zhí)行過程中產(chǎn)生錯誤,就會出現(xiàn)“此響應(yīng)不是合法的JSON響應(yīng)”的故障。
例如常見的:publish_post鉤子,會在文章或頁面發(fā)布/更新時觸發(fā)。
排查此類故障最好的方式就是將主題暫時切換至默認(rèn)主題,所有插件先暫時禁用。
如果以上操作后,沒有出現(xiàn)錯誤,則問題就是主題或插件引起的。
要找出導(dǎo)致問題的插件,請執(zhí)行以下步驟:
依次啟用/激活每個插件,看看是否出現(xiàn)錯誤。
如果啟用特定插件后錯誤仍然存在,將知道是哪一個導(dǎo)致了錯誤。
然后,可以停用該插件并激活其余插件。
如果是主題/插件的問題,則需要聯(lián)系開發(fā)者進(jìn)行反饋或咨詢解決辦法,或者使用其它同類型的主題/插件替換。
如果按照本文的方法至此都無法排除故障,那么只能使用經(jīng)典編輯器來替換Gutenberg編輯器。
WordPress 于 2018 年 12 月將經(jīng)典編輯器升級為新的古騰堡/塊編輯器。從那時起,許多用戶都遇到了這個問題。
安裝并激活Classic Editor插件即可切換為經(jīng)典編輯器。WordPress 的新塊編輯器將被舊的經(jīng)典編輯器取代,這將改變將來編輯頁面和帖子的方式。這也可能會影響先前使用塊編輯器編輯的現(xiàn)有頁面和帖子的格式和布局。
雖然使用經(jīng)典編輯器應(yīng)該可以解決問題,但故障原因未找出來。
WordPress 允許保留錯誤日志,但默認(rèn)情況下未啟用。要啟用它,在wp-config.php文件中添加以下代碼:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true );
debug.log(錯誤日志)文件將會出現(xiàn)在/wp-content/文件夾中。
還可以通過WordPress自帶的站點健康檢查WordPress REST API 是否遇到錯誤。如果發(fā)現(xiàn)此問題,解決該問題可能會修復(fù)網(wǎng)站的 JSON 響應(yīng)錯誤。