如何使用Gravity Forms计算用户提交的最后表单条目字段总和?
解决Gravity Forms跨表单计算用户最新条目指定字段总和
核心思路
直接通过Gravity Forms内置API查询当前登录用户的两个目标表单的最新提交条目,提取指定字段的数值后求和。这种方式无需依赖第三方插件,灵活性更高。
代码实现
将以下代码添加到主题functions.php文件或自定义插件中:
function get_user_latest_form_fields_sum($form_a_id, $field_a_id, $form_b_id, $field_b_id) { // 仅对登录用户生效 if (!is_user_logged_in()) { return 0; } $user_id = get_current_user_id(); $total_sum = 0; // 查询表单A的最新条目 $args_a = array( 'status' => 'active', 'form_id' => $form_a_id, 'created_by' => $user_id, 'orderby' => 'date_created', 'order' => 'DESC', 'limit' => 1 ); $entries_a = GFAPI::get_entries($args_a); // 提取并累加表单A指定字段值 if (!empty($entries_a)) { $field_value_a = rgar($entries_a[0], $field_a_id); $total_sum += is_numeric($field_value_a) ? floatval($field_value_a) : 0; } // 查询表单B的最新条目 $args_b = array( 'status' => 'active', 'form_id' => $form_b_id, 'created_by' => $user_id, 'orderby' => 'date_created', 'order' => 'DESC', 'limit' => 1 ); $entries_b = GFAPI::get_entries($args_b); // 提取并累加表单B指定字段值 if (!empty($entries_b)) { $field_value_b = rgar($entries_b[0], $field_b_id); $total_sum += is_numeric($field_value_b) ? floatval($field_value_b) : 0; } return $total_sum; }
使用方法
直接在代码中调用
在需要显示总和的位置(如页面模板、表单确认逻辑中)调用函数,替换为实际的表单ID和字段ID:
// 示例:表单A ID为1,目标字段ID为3;表单B ID为2,目标字段ID为5 $sum = get_user_latest_form_fields_sum(1, 3, 2, 5); echo "您的最新提交字段总和:" . $sum;
通过短代码在页面中显示
添加以下短代码注册代码:
add_shortcode('user_form_fields_sum', function($atts) { $atts = shortcode_atts(array( 'form_a' => '', 'field_a' => '', 'form_b' => '', 'field_b' => '', ), $atts); if (empty($atts['form_a']) || empty($atts['field_a']) || empty($atts['form_b']) || empty($atts['field_b'])) { return '请正确配置短代码参数'; } $sum = get_user_latest_form_fields_sum( intval($atts['form_a']), intval($atts['field_a']), intval($atts['form_b']), intval($atts['field_b']) ); return "您的最新提交字段总和:" . $sum; });
在页面或文章中使用短代码:[user_form_fields_sum form_a="1" field_a="3" form_b="2" field_b="5"]
注意事项
- 替换代码中的表单ID和字段ID为你实际的数值(在Gravity Forms编辑页面可查看)
- 确保目标字段为数值类型(如数字字段、带数值选项的下拉框),若为其他类型需调整值的提取逻辑
- 若用户未提交过某表单,该表单的字段值会被视为0,避免报错
- 代码依赖Gravity Forms的GFAPI,确保你的版本为v1.9及以上
内容的提问来源于stack exchange,提问作者Ekah Ehoche
相关产品推荐
相关产品推荐

