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

Gravity Forms如何将提交的大写字段值转为小写存储

问题描述
  • 基于Gravity Forms搭建评审类活动艺术家报名表单,用于采集报名者官方网站、社交媒体URL信息。
  • 业务要求:所有URL类字段存储值必须为全小写格式,否则Zapier同步数据至Zoho CRM时会出现字段识别失败问题。
  • 已尝试无效方案:通过CSS强制前端输入内容显示为小写,该方案仅修改前端视觉效果,数据库存储的实际字段值仍保留用户输入的大写格式,无法满足要求。
  • 自行编写的Gravity Forms钩子代码未达到预期效果,原代码如下:
add_filter( 'gform_save_field_value_8_54', 'lowercase_text', 10, 3 );
function lowercase_text( $value, $entry, $field ) {
if ( $field->get_input_type() == 'text' ) {
    $value = strtolower( $value );
}

return $value;
}

add_filter( 'gform_save_field_value_8_55', 'lowercase_text_fb', 10, 3 );
function lowercase_text_fb( $value, $entry, $field ) {
if ( $field->get_input_type() == 'text' ) {
    $value = strtolower( $value );
}

return $value;
}

add_filter( 'gform_save_field_value_8_67', 'lowercase_text_insta', 10, 3 );
function lowercase_text_insta( $value, $entry, $field ) {
if ( $field->get_input_type() == 'text' ) {
    $value = strtolower( $value );
}

return $value;
}
原代码失效原因
  • 钩子参数数量错误:gform_save_field_value系列钩子的官方标准回调参数为4个($value、$entry、$field、$form),原代码声明仅接收3个参数,会导致回调无法正常触发。
  • 字段类型判断不全:如果URL字段使用Gravity Forms自带的「网站」字段类型,get_input_type()返回值为website而非text,原代码仅判断text类型,遇到网站字段时不会执行转小写逻辑。
  • 重复冗余:三个钩子回调的逻辑完全一致,重复编写没有必要,后续维护成本高。
可用实现代码

将以下代码添加到当前主题的functions.php文件,或者自定义代码片段插件中即可生效:

add_filter( 'gform_save_field_value', 'gf_force_lowercase_url_values', 10, 4 );
function gf_force_lowercase_url_values( $value, $entry, $field, $form ) {
    // 配置项:指定需要处理的表单ID、字段ID
    $target_form_id = 8;
    $target_fields = [54, 55, 67];

    // 非目标表单、非目标字段直接返回原值
    if ( (int)$form['id'] !== $target_form_id || !in_array( (int)$field->id, $target_fields ) ) {
        return $value;
    }

    // 兼容文本字段、网站字段类型,非空值执行转小写
    if ( !empty( $value ) && in_array( $field->get_input_type(), ['text', 'website'] ) ) {
        $value = strtolower( trim( $value ) );
    }

    return $value;
}
效果说明
  • 代码直接在字段值写入数据库前完成转小写处理,不依赖前端展示效果,数据库存储的实际值即为全小写格式,完全满足Zapier同步Zoho CRM的格式要求。
  • 后续需要新增其他转小写的URL字段时,直接将对应字段ID添加到$target_fields数组即可,无需重复编写钩子逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:01:08