如何通过WordPress functions.php为Elementor表单按下拉选项动态添加CC邮箱?
Elementor表单根据下拉选项动态添加CC邮箱
实现思路
用Elementor Pro提供的elementor_pro/forms/email/recipients钩子,这个钩子能在表单发送邮件时修改收件人、CC和BCC列表。我们可以通过钩子函数获取表单提交的下拉字段值,判断是否匹配特定选项,再动态添加CC邮箱。
具体代码实现
把下面的代码加到主题的functions.php文件里(建议用子主题,避免主题更新丢失代码):
add_action( 'elementor_pro/forms/email/recipients', 'dynamic_add_cc_to_elementor_form', 10, 3 ); function dynamic_add_cc_to_elementor_form( $recipients, $form, $record ) { // 按实际情况修改以下参数 $dropdown_field_id = 'department'; // 下拉字段的ID(在表单编辑器高级选项里查看) $target_option_value = 'finance'; // 触发CC的下拉选项值 $cc_recipients = 'finance@company.com'; // 要加的CC邮箱,多个用数组:['a@xxx.com', 'b@xxx.com'] // 获取用户提交的下拉字段值 $submitted_value = isset( $record['fields'][ $dropdown_field_id ]['value'] ) ? $record['fields'][ $dropdown_field_id ]['value'] : ''; // 匹配目标选项就添加CC if ( $submitted_value === $target_option_value ) { // 处理已有CC的情况,统一转成数组格式 if ( ! empty( $recipients['cc'] ) ) { $existing_cc = is_array( $recipients['cc'] ) ? $recipients['cc'] : [ $recipients['cc'] ]; $recipients['cc'] = array_merge( $existing_cc, (array) $cc_recipients ); } else { $recipients['cc'] = (array) $cc_recipients; } } return $recipients; }
关键说明
- 获取下拉字段ID:在Elementor表单编辑器里选中下拉字段,进「高级」选项卡看「字段ID」;或者前端页面看字段的
name属性,格式是form_fields[xxx],xxx就是字段ID。 - 多CC邮箱支持:要加多个CC邮箱,直接把
$cc_recipients改成数组就行,比如['finance@company.com', 'admin@company.com']。 - 版本要求:必须激活Elementor Pro,这个钩子只有Pro版本能用。
- 测试验证:提交表单时选目标下拉选项,检查收件邮箱的CC列表是否包含指定邮箱。
内容的提问来源于stack exchange,提问作者MJNinja
相关产品推荐
相关产品推荐

