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

如何通过编程方式获取Gravity Form表单提交的日期时间

Gravity Forms 获取表单提交时间的实现方案

你没在元数据表里找到提交时间字段是正常的——Gravity Forms的提交核心时间字段存在主提交表,不存在gf_entry_meta元数据表中,可通过以下两种方式获取:

方式一:通过GFAPI获取(官方推荐,兼容性最好)

所有提交记录的返回对象/数组中都自带date_created字段,存储的是UTC时区的提交时间,格式为Y-m-d H:i:s,直接调用即可,不需要额外关联查询元数据。

// 替换为你的学生同意表单实际ID
$target_form_id = 5;
// 查询条件:取当前登录用户的有效提交记录
$search_args = [
    'field_filters' => [
        [
            'key'   => 'created_by',
            'value' => get_current_user_id(),
        ]
    ],
    'status' => 'active' // 排除已标记为垃圾、回收站的提交
];
// 排序规则:按提交时间倒序,只取最新1条即可判断是否需要年度更新
$sort_args = [
    'key'       => 'date_created',
    'direction' => 'DESC'
];
$paging_args = [
    'offset'    => 0,
    'page_size' => 1
];

$entries = GFAPI::get_entries($target_form_id, $search_args, $sort_args, $paging_args);
if (!is_wp_error($entries) && !empty($entries)) {
    $latest_consent = $entries[0];
    // 取UTC格式的提交时间
    $submit_time_gmt = $latest_consent['date_created'];
    // 转换为站点本地时间戳,用于判断是否超过1年有效期
    $submit_timestamp = get_date_from_gmt($submit_time_gmt, 'U');
    $need_renew_consent = (time() - $submit_timestamp) > YEAR_IN_SECONDS;
}

如果你已经知道具体的提交记录ID,直接调用GFAPI::get_entry($entry_id)即可拿到单条记录的date_created值,不需要走列表查询。

方式二:直接查询数据库(适合高流量场景,减少API开销)

如果你的站点访问量较大,不想走GFAPI的多层逻辑,可以直接查询WordPress数据库获取时间,提交时间存储在{表前缀}gf_entry主表中,核心相关字段如下:

  • id:提交记录唯一ID
  • form_id:关联的表单ID
  • created_by:提交人关联的站点用户ID(游客提交时值为0)
  • date_created:提交时间(UTC时区,datetime格式)
  • date_updated:提交记录最后一次被编辑的时间(如果你的表单允许用户后续修改同意状态,优先取这个字段判断最新操作时间)

查询示例代码:

global $wpdb;
$target_form_id = 5;
$current_user_id = get_current_user_id();
$latest_submit_gmt = $wpdb->get_var($wpdb->prepare(
    "SELECT date_created FROM {$wpdb->prefix}gf_entry
    WHERE form_id = %d AND created_by = %d AND status = 'active'
    ORDER BY date_created DESC LIMIT 1",
    $target_form_id,
    $current_user_id
));

注意事项

  • Gravity Forms存储的所有时间默认是UTC时区,不要直接用站点本地时间和该值做比对,必须先通过get_date_from_gmt()转换为对应时区的时间再计算差值,否则年度有效期判断会出现时区偏差
  • 你提到的提交时间merge tag,本质也是读取gf_entry表的date_created字段做格式化输出,不存在单独的隐藏字段存储该值
  • 做同意时间统计报表时,直接基于gf_entry表的date_created字段聚合即可,不需要关联元数据表查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:18