問題描述
標題聲音 counter-intuitive 但忍受我。 🙂
我有選項頁面,使用設定 API 。當使用者輸入無效資料時,我想用 add_settings_error()呼叫顯示錯誤通知。
但!為了確定資料無效,我需要進行遠端 API 呼叫。該呼叫依賴於儲存的資料。所以我無法在清理回撥 (這是推薦的地方丟擲這樣的通知),因為我的資料尚未儲存。
相反,我試圖將我的支票掛在 admin_notices 中。除了一個 (最重要的) 情況之外,大多數時間工作正常。當儲存設定時,它們總是跟隨著本地設定儲存。通知和我的習慣通知由於某種原因被完全忽略。
那麼即使 WP 認為一切都很好,我該如何丟擲這個錯誤提示呢?
編輯
更集中的問題 – 為什麼設定儲存。勝過任何其他通知?
PS 我可以嘗試使 API 呼叫可選地將資料作為引數,而不是從儲存的選項中讀取資料,但到目前為止,我認為這將使引數過於龐大。
最佳解決方案
好的,我想我有一個想法發生了什麼。
-
要顯示的通知列表由
get_settings_errors()(source) 檢索。 -
此功能從全域性
$wp_settings_errors讀取通知,除非有settings_errors瞬態集,其優於全域性變數。 -
當儲存設定時,檢查是否沒有設定錯誤,如果已儲存設定。生成通知。之後 (在任何一種情況下) 錯誤都儲存到
settings_errors瞬態 (我假定在重定向上保留它們)(source) 。
基本上無論你在程式碼中生成什麼注意事項 – 當設定瞬態時,它們將被忽略,並且在儲存設定後總是被設定。
對於我來說,連線瞬態與全域性變數是有意義的,而不是使其獨佔或選擇。
我想在短暫設定時顯示自定義通知,我將需要混淆這種瞬態,這可能不值得。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。