如何防止options.php从数据库中删除有效的现有数据 时间:2013-01-29 作者:Pete Lawless 我正在设置一个插件,并首次使用设置API在设置中创建表单。默认情况下,当插件被激活并以序列化格式存储在数据库中时,最初会创建插件的数据。今天,我添加了验证回调函数,它可以很好地进行验证。但是,当任何字段验证失败并且函数返回false(我也尝试返回NULL)时,数据库中现有的有效数据将被删除。问题是事情是怎么发生的,还是我在做傻事?在这种情况下,我原本预计数据库中现有的有效数据将保持不变,直到用户提供了一组有效数据来修改它为止。感谢您的任何建议。 1 个回复 SO网友:Simon 你的sanitize_callback 函数不应返回false 或null 指示输入无效-其目的是始终返回有效值。此函数返回的值是将保存到数据库的值,因此为了让它真正清理任何内容,它必须返回有意义的内容。将其与使用进行比较intval 如中所示this example, 这将强制设置API存储int 值,无论输入是什么。无论如何,要解决您的问题,您应该:返回previously stored 如果输入无效,则返回值default value 如果输入为空(不允许为空值),则返回newly input 值如果它被认为是有效的此外,除了最后一条语句之外,您的值很可能在卫生过程中变得有效:想象一下输入,例如" [email protected]" 或"0123" 可能会被消毒"[email protected]" 和123 根据您的需要。 结束 文章导航