问题描述
标题声音 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。