如何在Elementor表单提交后获取自定义字段标签?
获取Elementor表单提交后字段标签的解决方案
Elementor表单提交记录($record对象)里的fields仅存储用户提交的值,字段标签属于表单的配置信息,需要从表单的原始设置中获取,具体实现如下:
// 获取当前提交记录对应的表单ID $form_id = $record->get_form_settings( 'form_id' ); // 通过Elementor Forms管理器加载表单实例 $form_manager = \ElementorPro\Modules\Forms\Classes\Forms_Manager::instance(); $form = $form_manager->get_form( $form_id ); // 若表单实例不存在,直接终止执行 if ( ! $form ) { return; } // 获取提交的原始字段数据 $raw_fields = $record->get( 'fields' ); // 用于存储包含标签和值的字段数据 $form_fields_with_labels = []; // 遍历所有提交的字段 foreach ( $raw_fields as $field_id => $submitted_data ) { $field_label = ''; // 遍历表单的原始字段配置,匹配对应字段的标签 foreach ( $form['fields'] as $form_field ) { // 匹配字段的自定义ID或系统生成ID if ( $form_field['custom_id'] === $field_id || $form_field['id'] === $field_id ) { $field_label = $form_field['label']; break; } } // 组装字段的ID、值和标签 $form_fields_with_labels[ $field_id ] = [ 'value' => $submitted_data['value'], 'label' => $field_label ]; }
关键说明
- 表单实例通过
Forms_Manager获取,确保能拿到表单的完整字段配置 - 字段匹配同时检查
custom_id(用户自定义的字段ID)和id(Elementor自动生成的字段ID),避免遗漏 - 加入表单实例存在性判断,防止因表单被删除等情况引发报错
内容的提问来源于stack exchange,提问作者Tech Me
相关产品推荐
相关产品推荐

