View Categories

只有編輯、作者帳號會出現「這個區塊發生錯誤」?

1 分鐘閱讀

快速答案:管理員編輯正常、編輯者或作者一新增文章就跳「這個區塊發生錯誤」或編輯器一片空白,通常不是外掛壞了,而是那個角色被擋了:資安外掛限制了非管理員使用 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 錯誤,有時只對某個角色發生,因為某支外掛只對非管理員載入。

怎麼處理 #

  1. 建一個跟出問題同角色的測試帳號,用無痕視窗登入重現,不要用自己的管理員帳號猜。
  2. F12 → Network,重新載入編輯器,找 /wp-json/ 開頭、狀態 401 或 403 的請求。有,就去資安外掛的 REST API 設定、Cloudflare 防火牆事件把該角色或路徑放行。
  3. 只有某個區塊壞:點區塊上的「嘗試復原」或「轉換為 HTML」看內容,有 iframe 或 script 就是權限問題。解法二選一:改用內建的嵌入區塊(不需原始 HTML);或用角色編輯外掛給該角色 unfiltered_html,只給信得過的人。
  4. 區塊顯示網站不支援這個區塊:提供該區塊的外掛被停用或更新失敗,重新啟用即可。
  5. 編輯器空白:Console 的紅字會指向某支外掛的 JS,停用它;記憶體不足也會空白,看主機錯誤紀錄。急著出稿時先裝 Classic Editor 讓同事能工作,再慢慢查。

我們實際遇過的情況 #

一個官網的非管理員帳號一新增文章就出現「這個區塊發生錯誤」而無法預覽,管理員卻完全正常。這種「只有某些角色壞」的症狀,要從角色權限與 REST API 限制查,而不是重裝編輯器。另一家客戶在文章裡嵌入 Google 表單,按更新後嵌入碼就消失,這是原始 HTML 被過濾的典型樣子:改用內建的嵌入方式,或確認發文帳號有這項權限。

也遇過一個站的內建編輯器點下去整片空白。這時先看是不是所有人都一樣——所有人都空白就不是角色問題,照第 5 步看 Console 找出衝突的外掛。

什麼時候該找人 #

放行 REST API 會牽動網站的安全邊界,給 unfiltered_html 等於允許那個人往網站塞任何程式碼——這兩件事在多人共用後台、或後台曾被入侵的站上都要謹慎,先看員工帳號該給什麼權限。編輯器空白同時前台也報錯,走白畫面排查

常見問題 #

為什麼管理員編輯正常,作者就出錯? #

資安外掛或 Cloudflare 限制了非管理員使用 REST API,區塊編輯器的載入、預覽、儲存就會失敗。

文章裡嵌入的 Google 表單,存檔後消失? #

發文帳號沒有原始 HTML 權限,iframe 被過濾了;改用內建的嵌入方式,或確認帳號的角色與權限。

編輯器一片空白,所有人都一樣? #

那就不是角色問題。按 F12 看 Console 紅字指向哪支外掛並停用它;急用可先裝 Classic Editor。

網站正在出這個問題?網站救援當日受理;想有人每月幫你顧著:網站守護方案