如何基于用户最新表单提交预填充 Gravity Forms 字段

落强酱_3816

落强酱_3816

2026-09-23

900人浏览

原创

如何基于用户最新表单提交预填充 Gravity Forms 字段

本文介绍两种可靠方式实现 gravity forms 表单字段的自动预填充:一是利用内置用户元字段合并标签(推荐、零代码),二是通过自定义钩子读取当前用户最新提交记录并动态填充(适用于需复用历史表单数据的场景)。

本文介绍两种可靠方式实现 gravity forms 表单字段的自动预填充:一是利用内置用户元字段合并标签(推荐、零代码),二是通过自定义钩子读取当前用户最新提交记录并动态填充(适用于需复用历史表单数据的场景)。

Gravity Forms 提供了灵活且强大的预填充机制,尤其适合重复性表单场景(如年度活动注册)。当用户每年填写同一张表单时,若能自动加载其上次提交的数据或用户资料,将显著提升体验与填写效率。以下是两种经过验证的实践方案:

✅ 方案一:使用 user: 合并标签(最简、推荐)

Gravity Forms 原生支持基于 WordPress 用户元数据(user meta)的合并标签,语法为 {user:meta_key}。该方式无需编写 PHP 代码,配置直观、稳定可靠,适用于姓名、邮箱、地址等已存储在用户档案中的信息。

操作步骤:

  1. 编辑目标表单 → 点击需预填充的字段(如「姓名」)→ 进入「高级」选项卡;
  2. 在「默认值」输入框中填入对应合并标签,例如:
    • 姓名字段 → {user:first_name}
    • 姓氏字段 → {user:last_name}
    • 邮箱字段 → {user:user_email}
    • 自定义用户字段(如 billing_postcode)→ {user:billing_postcode}

优势:即配即用、兼容性强、无性能开销;
⚠️ 注意:仅适用于已保存在 wp_usermeta 表中的字段(包括 WooCommerce、Profile Builder 等插件扩展的用户字段),不适用于历史表单提交内容。

✅ 方案二:动态读取用户最新表单提交(精准复用历史数据)

若需预填充的是用户上一次提交该表单时填写的具体内容(例如“去年报名的公司名称”“参会人数”等非用户元字段),则需通过 gform_field_value_* 钩子动态查询。您提供的原始代码思路正确,但存在两处关键问题需修正:

jQuery金融借款单提交表单
jQuery金融借款单提交表单

jQuery金融借款单提交表单,包含出借金额和日期的选择,且自动计算利息,非常的简单方便。

下载
  1. rgars() 是 Gravity Forms 旧版辅助函数(已弃用),应改用 wp_list_pluck() 或直接数组访问;
  2. $field->id 是字段 ID,但 GFAPI::get_entries() 返回的条目结构中,字段值位于 ['field_id'] 键下(非嵌套路径),需用 GFFormsModel::get_lead_field_value() 安全提取。

优化后的完整代码示例:

add_filter( 'gform_field_value_latest_entry_value', 'populate_from_latest_entry', 10, 2 );
function populate_from_latest_entry( $value, $field ) {
    // 仅对登录用户生效
    if ( ! is_user_logged_in() ) {
        return $value;
    }

    $user_id = get_current_user_id();
    $form_id = $field->formId;

    // 查询当前用户对该表单的最新一条提交(按创建时间倒序)
    $entries = GFAPI::get_entries(
        $form_id,
        [
            'status'        => 'active',
            'field_filters' => [
                [
                    'key'   => 'created_by',
                    'value' => $user_id,
                ],
            ],
        ],
        [],
        [ 'page_size' => 1, 'offset' => 0, 'sort' => 'date_created DESC' ]
    );

    if ( is_wp_error( $entries ) || empty( $entries ) ) {
        return $value; // 无历史提交,返回空
    }

    $latest_entry = $entries[0];
    // 安全获取指定字段的值(自动处理单选/多选/文件上传等复杂类型)
    $field_value = GFFormsModel::get_lead_field_value( $latest_entry, $field->id );

    return $field_value ?: $value;
}

启用方式:

  • 在表单字段的「高级」设置中,将「默认值」设为 {latest_entry_value}(与 gform_field_value_ 后缀一致);
  • 每个字段需单独配置该合并标签(如需预填充多个字段,全部设为 {latest_entry_value} 即可)。

优势:精准复用用户真实历史提交,支持任意表单字段;
⚠️ 注意事项

  • 确保用户有且仅有一次提交(或明确业务逻辑取最新一条);
  • 高并发场景建议添加缓存(如 wp_cache_set())避免频繁查询;
  • 若表单含条件逻辑或动态字段,需额外校验字段 ID 兼容性。

总结建议

  • 优先使用 {user:xxx}:适用于用户资料类字段,开发零成本、维护零负担;
  • 选用 latest_entry_value 钩子:适用于需继承历史表单上下文的业务(如续费、年度更新),需少量代码但控制力更强;
  • 避免混合使用:同一字段勿同时依赖用户元数据与历史提交,易引发逻辑冲突;
  • 务必测试权限:确保 is_user_logged_in() 校验及 GFAPI::get_entries()created_by 过滤准确生效。

通过以上任一方案,即可让您的年度注册表单真正“记住用户”,兼顾简洁性与专业性。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

表单提交

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9144

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5541

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2015

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3448

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4114

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3231

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4577

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3562

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11602

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP与Ajax极速入门
PHP与Ajax极速入门

共8课时 | 11.7万人学习