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

如何处理Elementor Pro表单数据并将格式化结果存入隐藏字段?

Elementor Pro表单隐藏字段赋值解决方案

需求说明

需要在Elementor Pro表单中生成格式为EXC [用户名字首词] [手机号后四位]的内容(示例:EXC Pedro 1234),并将该值写入表单的隐藏字段,表单包含3个可见字段+1个隐藏字段。

现有脚本问题分析

  1. 第一段脚本直接修改$_POST数组,但elementor_pro/forms/new_record钩子触发时,表单数据已完成初始处理,修改$_POST无法同步到表单记录中。
  2. 第二段脚本遍历$record->get('fields')时获取的是字段副本,修改后不会同步到原记录对象;且生成的前缀为FAD,与需求的EXC不符。

修正后的脚本

add_action( 'elementor_pro/forms/new_record', function( $record, $handler ) {
    // 仅对指定表单执行逻辑
    $form_name = $record->get_form_settings( 'form_name' );
    if ( 'cap-avalanche' !== $form_name ) {
        return;
    }

    // 获取表单字段值,增加空值保护
    $fields = $record->get( 'fields' );
    $name = trim( $fields['name']['value'] ?? '' );
    $phone = $fields['field_3aa9bef']['value'] ?? '';

    // 验证必填字段非空
    if ( empty( $name ) || empty( $phone ) ) {
        return;
    }

    // 提取用户名字首词
    $first_name = explode( ' ', $name )[0];

    // 提取手机号后四位(先过滤非数字字符)
    $clean_phone = preg_replace( '/[^0-9]/', '', $phone );
    $last_four = strlen( $clean_phone ) >= 4 ? substr( $clean_phone, -4 ) : $clean_phone;

    // 生成符合要求的目标字符串
    $target_value = "EXC {$first_name} {$last_four}";

    // 更新隐藏字段(请确保字段ID为'titulo',否则替换为实际ID)
    $record->update_field( 'titulo', $target_value );

    // 保存更新后的字段数据
    $record->update_fields();
}, 10, 2 );

使用注意事项

  • 确认字段ID:在Elementor表单编辑器中,编辑隐藏字段,查看「高级」选项卡下的「字段ID」,确保与脚本中的titulo一致。
  • 确认表单名称:在表单设置的「基本」选项卡下查看「表单名称」,确保与脚本中的cap-avalanche一致。
  • 代码添加方式:推荐使用Code Snippets等代码片段插件添加代码,避免直接修改主题functions.php导致的主题更新丢失或报错问题。
  • 测试技巧:可暂时将隐藏字段改为文本字段,提交表单后查看赋值是否成功,确认无误后再改回隐藏字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:37:02