Elementor Pro表单需求:部分字段仅发邮件不存入线索,求调试帮助
解决Elementor表单字段仅发邮件不存线索的问题
问题诊断
你的代码存在几个关键问题导致报错:
- 语法错误:
if($form_id === "add_extra_fields")语句后缺少起始大括号,代码结构混乱。 - 错误返回值:在
elementor_pro/forms/new_record钩子中返回false会中断后续流程,应直接修改传入的$record对象,无需返回布尔值。 - 字段操作方式错误:用
set_field或update_field设为空值仍可能将空字段存入线索,正确做法是彻底移除字段。
修正后的代码
add_action( 'elementor_pro/forms/new_record', [ $plugin_public, 'remove_specific_fields_from_leads' ], 9, 1 ); public function remove_specific_fields_from_leads( $record ) { // 验证目标表单 $form_id = $record->get_form_settings( 'form_id' ); if ( $form_id !== "add_extra_fields" ) { return; } // 定义需要移除的字段键名 $fields_to_remove = [ 'field1', 'field2' ]; // 替换为实际字段ID foreach ( $fields_to_remove as $field_key ) { if ( $record->get_field( $field_key ) ) { $record->remove_field( $field_key ); } } }
关键说明
- 钩子优先级:设置为
9确保在Elementor保存线索前执行字段移除,避免字段被存入。 - 字段ID确认:
field1需替换为表单中实际的字段键名,可在Elementor表单编辑器的「高级」选项卡中查看「字段ID」。 - 不影响邮件发送:邮件内容在该钩子触发前已生成,移除字段只会阻止其存入线索,不会影响邮件正常发送。
调试方法
若仍报错,可开启WordPress调试模式排查具体问题:
在wp-config.php中添加以下代码:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
提交表单后查看wp-content/debug.log文件,获取详细错误信息。
内容的提问来源于stack exchange,提问作者user7270134
相关产品推荐
相关产品推荐

