You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现WPForm提交时自动减少WordPress自定义字段值?

实现WPForms表单提交后自动减少ACF活动可参与人数

我搭建的网站中创建了名为Events的CPT(自定义文章类型),并通过ACF(高级自定义字段)为其添加了活动名称、日期、艺人、描述以及number_of_people(可参与人数)字段,用于设置活动的可报名人数。已为Events创建了Elementor单文章页面,并在页面中放置了用于报名的WPForm表单。需要实现每次用户提交表单时,自动减少该活动的可用票数(即number_of_people字段值)。

以下是实现代码:

add_action('wpforms_process_complete', 'reduce_custom_field_on_form_submission', 10, 4);
function reduce_custom_field_on_form_submission($form_id, $entry_id, $form_data, $entry_data) {
    if ($form_id == 56797) {
        $post_id = $entry_data['post_id'];
        $custom_field_name = 'number_of_people';
        $amount_to_reduce = 1;

        $current_value = get_field($custom_field_name, $post_id);

        if ($current_value !== false) {
            $new_value = max(0, $current_value - $amount_to_reduce);
            
            update_field($custom_field_name, $new_value, $post_id);
        }
    }
}

关键注意事项

  • 确保代码中的$form_id(示例中为56797)与你的WPForms表单ID完全匹配
  • 确认$entry_data['post_id']能正确获取当前活动文章的ID:如果表单放在Elementor单文章页面内,这个值通常能自动传递;若出现异常,可尝试替换为$post_id = get_the_ID();来获取当前页面的文章ID
  • 检查ACF字段名number_of_people是否与你创建的字段键完全一致(ACF字段键可能和字段标签不同,需在字段编辑页面查看)
  • 若支持多人报名,可修改$amount_to_reduce的值,或从表单提交数据中读取报名人数动态设置减少量
  • 高并发场景下建议添加数据库锁机制,避免同时提交导致的票数计算错误

内容的提问来源于stack exchange,提问作者user16051361

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:36:13