我不完全清楚你的问题是什么,但希望这能涵盖它:
有很多关于如何在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调用有机会返回之前点击更新按钮。为了确保在允许用户保存之前已验证该值,您可以尝试以下几项(选择对您更有效的选项):
在验证值之前,禁用更新按钮默认情况下,myCondition变量(或等效变量)为false。跟踪用户是否尝试更新帖子,但在AJAX调用返回之前,不要让它通过。如果调用返回并且值是唯一的,则可以通过JS提交表单。根据UI的设计方式,这可能会让用户感到困惑,也可能不会让用户感到困惑。最好的做法是让他们知道发生了什么,可能需要一点“等待…”弹出窗口或你有什么我对一些事情很感兴趣,因为我不知道你对这些事情了解多少。如果您需要任何详细信息,请告诉我,我会尽力提供。