我正在使用ACF的acf/validate_save_post
动作挂钩在表单提交并保存到帖子类型之前,使用第三方API验证前端表单中的序列号。
如果对第三方API的调用返回错误,我将使用此操作挂钩使用acf_add_validation_error()
函数显示验证错误。
由于在发布帖子时(以及之前,在进行JS验证时)调用acf/validation_save_post
动作钩子,序列号最终会被验证3次。由于API端设置了限制,最终会锁定用户。
有没有办法在发布帖子时将动作钩子从运行中锁定,并且只在它进行JS验证时运行它?
我曾尝试在wp_doing_ajax()
声明中使用if
,但我认为所有工作都是通过AJAX完成的,除非我错了。无论如何,在使用wp_doing_ajax()
时它似乎仍然运行不止一次,所以可能还有另一种解决方案。
如果将来有人发现这个问题,问题的解决方案是通过wp_doing_ajax()
检查这是否是一个AJAX请求。这将通过admin或acf/save_post
动作挂钩发布帖子时停止验证。