快速答案:管理員編輯正常、編輯者或作者一新增文章就跳「這個區塊發生錯誤」或編輯器一片空白,通常不是外掛壞了,而是那個角色被擋了:資安外掛限制了非管理員使用 REST API,或作者這類角色沒有「unfiltered_html」權限,內嵌 iframe 的區塊被過濾後就壞掉。用同角色的測試帳號重現,按 F12 看哪個請求變成 401 或 403。
為什麼會這樣 #
區塊編輯器整個是靠 REST API 在跟網站溝通:載入文章、預覽、儲存都是打 /wp-json/ 底下的網址。很多資安外掛都有「限制 REST API」的選項,設定一不小心就把編輯、作者一起擋掉——管理員自己測永遠正常,所以很難發現。Cloudflare 的防火牆規則擋 /wp-json/ 也一樣。
第二種是權限層級:WordPress 預設只有管理員和編輯(多站點網路則只有超級管理員)能存 iframe、script 這類原始 HTML,作者、投稿者存檔時這些標籤會被拿掉;有些資安設定還會把所有人的原始 HTML 權限一起關掉。內容裡有 Google 表單、地圖嵌入或自訂 HTML 區塊,一被過濾,區塊內容跟原本記錄的對不上,就顯示「這個區塊發生錯誤」或「此區塊包含未預期或無效的內容」。
第三種是角色管理外掛拿掉了 upload_files、edit_posts 之類的能力,或某支區塊外掛停用了,那個區塊沒有對應程式可載入。編輯器整片空白則多半是 JavaScript 錯誤,有時只對某個角色發生,因為某支外掛只對非管理員載入。
怎麼處理 #
- 建一個跟出問題同角色的測試帳號,用無痕視窗登入重現,不要用自己的管理員帳號猜。
- F12 → Network,重新載入編輯器,找 /wp-json/ 開頭、狀態 401 或 403 的請求。有,就去資安外掛的 REST API 設定、Cloudflare 防火牆事件把該角色或路徑放行。
- 只有某個區塊壞:點區塊上的「嘗試復原」或「轉換為 HTML」看內容,有 iframe 或 script 就是權限問題。解法二選一:改用內建的嵌入區塊(不需原始 HTML);或用角色編輯外掛給該角色 unfiltered_html,只給信得過的人。
- 區塊顯示網站不支援這個區塊:提供該區塊的外掛被停用或更新失敗,重新啟用即可。
- 編輯器空白:Console 的紅字會指向某支外掛的 JS,停用它;記憶體不足也會空白,看主機錯誤紀錄。急著出稿時先裝 Classic Editor 讓同事能工作,再慢慢查。
我們實際遇過的情況 #
一個官網的非管理員帳號一新增文章就出現「這個區塊發生錯誤」而無法預覽,管理員卻完全正常。這種「只有某些角色壞」的症狀,要從角色權限與 REST API 限制查,而不是重裝編輯器。另一家客戶在文章裡嵌入 Google 表單,按更新後嵌入碼就消失,這是原始 HTML 被過濾的典型樣子:改用內建的嵌入方式,或確認發文帳號有這項權限。
也遇過一個站的內建編輯器點下去整片空白。這時先看是不是所有人都一樣——所有人都空白就不是角色問題,照第 5 步看 Console 找出衝突的外掛。
什麼時候該找人 #
放行 REST API 會牽動網站的安全邊界,給 unfiltered_html 等於允許那個人往網站塞任何程式碼——這兩件事在多人共用後台、或後台曾被入侵的站上都要謹慎,先看員工帳號該給什麼權限。編輯器空白同時前台也報錯,走白畫面排查。
WPTOOLBEAR網站工具熊