問題描述

標題聲音 counter-intuitive 但忍受我。 🙂

我有選項頁面,使用設置 API 。當用户輸入無效數據時,我想用 add_settings_error()調用顯示錯誤通知。

但!為了確定數據無效,我需要進行遠程 API 調用。該呼叫依賴於保存的數據。所以我無法在清理回調 (這是推薦的地方拋出這樣的通知),因為我的數據尚未保存。

相反,我試圖將我的支票掛在 admin_notices 中。除了一個 (最重要的) 情況之外,大多數時間工作正常。當保存設置時,它們總是跟隨着本地設置保存。通知和我的習慣通知由於某種原因被完全忽略。

那麼即使 WP 認為一切都很好,我該如何拋出這個錯誤提示呢?

編輯

更集中的問題 – 為什麼設置保存。勝過任何其他通知?

PS 我可以嘗試使 API 調用可選地將數據作為參數,而不是從保存的選項中讀取數據,但到目前為止,我認為這將使參數過於龐大。

最佳解決方案

好的,我想我有一個想法發生了什麼。

  1. 要顯示的通知列表由 get_settings_errors()(source) 檢索。

  2. 此功能從全局 $wp_settings_errors 讀取通知,除非有 settings_errors 瞬態集,其優於全局變量。

  3. 當保存設置時,檢查是否沒有設置錯誤,如果已保存設置。生成通知。之後 (在任何一種情況下) 錯誤都保存到 settings_errors 瞬態 (我假定在重定向上保留它們)(source) 。

基本上無論你在代碼中生成什麼注意事項 – 當設置瞬態時,它們將被忽略,並且在保存設置後總是被設置。

對於我來説,連接瞬態與全局變量是有意義的,而不是使其獨佔或選擇。

我想在短暫設置時顯示自定義通知,我將需要混淆這種瞬態,這可能不值得。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。