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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:14