如何实现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
相关产品推荐
相关产品推荐

