WordPress中如何针对草稿状态忽略ACF(Advanced Custom Fields)插件的必填字段验证
解决ACF必填字段在草稿状态下的验证问题
我来帮你搞定这个ACF验证的问题!你之前的代码之所以没生效,是因为没有针对文章状态做判断,直接一刀切重置了所有错误,这显然不是你想要的效果。试试下面这个针对性的解决方案:
add_action('acf/validate_save_post', 'skip_acf_validation_for_drafts', 10); function skip_acf_validation_for_drafts() { // 获取当前文章对象及提交的状态参数 global $post; $current_status = isset($post->post_status) ? $post->post_status : ''; $submitted_status = isset($_POST['post_status']) ? $_POST['post_status'] : ''; // 当文章当前是草稿,或者即将保存为草稿时,跳过验证 if ($current_status === 'draft' || $submitted_status === 'draft') { acf_reset_validation_errors(); } }
代码逻辑说明:
- 同时检查当前文章状态和提交的状态参数:因为有时候管理员可能会从已发布/待审核状态切换为草稿提交,这时候
$post->post_status还没更新,必须通过$_POST['post_status']获取用户选择的目标状态 - 只有当状态是草稿时,才调用
acf_reset_validation_errors()清除所有ACF验证错误,这样管理员就能快速保存草稿,之后再回来补充必填内容 - 钩子优先级设为10,和ACF默认的验证钩子优先级保持一致,确保能在ACF执行验证后正确拦截并清除错误
注意事项:
- 把这段代码添加到你的主题
functions.php文件中,或者自定义插件的代码里 - 该方案适用于所有文章类型(包括自定义文章类型),因为它基于全局
$post对象的状态判断 - 测试时可以分两步验证:
- 第一步:只填部分内容,选择「草稿」状态保存,应该能成功提交,不会触发必填字段提示
- 第二步:保持必填字段为空,选择「发布」或「待审核」状态提交,应该会正常弹出ACF的必填验证错误
内容的提问来源于stack exchange,提问作者Jitendra Damor
相关产品推荐
相关产品推荐

