检查并强制实施用户在WP管理中输入的自定义元字段中的唯一值

时间:2014-04-27 作者:Stephen

我试图弄清楚,在新的或编辑帖子屏幕上,如何允许用户输入自定义元项目,但强制它是唯一的。理想情况下,该过程的工作原理如下:

投稿者登录WP Admin并在“自定义字段”区域中选择新帖子,他们选择键(类似“组标题”),然后输入其值。一些ajaxy东西会验证数据库中是否存在此值,并警告他们选择另一个值,如果存在,帖子将不会保存或更新,除非该值在我搜索以前的项目时是唯一的,我发现this post 但它似乎对ajaxy检查并没有帮助,也不能阻止在admin中提交。

1 个回复
SO网友:TheRealMikeD

我不完全清楚你的问题是什么,但希望这能涵盖它:

有很多关于如何在WP中使用AJAX的文档。我从这里开始:https://codex.wordpress.org/AJAX

在编写用于将AJAX调用挂接到的函数中,调用DB以查看用户输入的值是否已经存在(注意此处的SQL注入攻击:https://www.getastra.com/blog/cms/wordpress-security/wordpress-sql-injection-attack-protection/). 我不知道有什么现成的方法可以做到这一点,但您可以很容易地进行自己的查询。将检查结果(可能是JSON格式)返回给调用的JS代码。

您可以通过向表单的提交事件添加事件处理程序并在事件对象上调用preventDefault()来阻止帖子保存(在为帖子编辑页面加载的自定义JS文件中):

jQuery(\'form#post\').submit(function(evt) {
    if (myCondition === false) {
        evt.preventDefault();
    }
});
myCondition是一个变量,您可以定义它来存储检查用户输入值唯一性的结果。通过使用闭包,您可以使该函数对处理程序函数有用。

在时间安排方面,你可能会遇到一些麻烦。如果在用户输入值的输入字段的模糊事件上进行AJAX调用,那么他们可能会在AJAX调用有机会返回之前点击更新按钮。为了确保在允许用户保存之前已验证该值,您可以尝试以下几项(选择对您更有效的选项):

在验证值之前,禁用更新按钮

结束

相关推荐

为自定义字段创建Metabox

我使用自定义字段将视频添加到WordPress帖子的视频格式中。我想知道是否有任何方法可以在post editor中为特定的自定义字段创建一个元框(如摘录或其他内容)。只需要一个文本区域来添加iframe代码。例如,自定义字段是嵌入视频。