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

如何将Elementor Pro表单的submission_id添加至邮件主题与内容?

如何在Elementor Pro表单邮件中添加Submission ID(工单式编号)

需求背景

使用Elementor Pro表单作为联系表单,希望将表单提交的submission_id添加到邮件标题和正文,实现类似工单系统的效果(示例:来自xxx的新邮件 - ID: 4566334)。此前尝试自定义短代码获取ID但无效,排查发现依赖$_POST参数的逻辑在邮件渲染阶段已无法获取数据,且不想使用付费插件。

解决方案:使用Elementor表单官方钩子

Elementor Pro提供了专门的表单钩子,可在邮件准备阶段直接获取已生成的submission_id,无需依赖$_POST参数。以下是具体实现代码:

1. 给邮件标题追加Submission ID

将以下代码添加到主题的functions.php文件中:

add_action( 'elementor_pro/forms/email/prepare_content', 'append_submission_id_to_email_subject', 10, 3 );
function append_submission_id_to_email_subject( $message, $form, $record ) {
    // 获取提交记录ID
    $submission_id = $record->get( '_id' );
    if ( empty( $submission_id ) ) {
        return $message;
    }
    // 给原标题追加ID标识
    $original_subject = $form->settings['email_subject'];
    $form->settings['email_subject'] = "{$original_subject} - ID: {$submission_id}";
    return $message;
}

2. 在邮件正文中插入Submission ID

如果需要在邮件正文中显示ID,可添加以下代码(同样放入functions.php):

add_action( 'elementor_pro/forms/email/prepare_content', 'insert_submission_id_to_email_body', 10, 3 );
function insert_submission_id_to_email_body( $message, $form, $record ) {
    $submission_id = $record->get( '_id' );
    if ( empty( $submission_id ) ) {
        return $message;
    }
    // 将邮件内容中的{submission_id}占位符替换为实际ID
    return str_replace( '{submission_id}', $submission_id, $message );
}

使用说明

  • 配置邮件标题:在Elementor表单的邮件设置中,填写正常的标题内容即可,代码会自动在标题末尾追加- ID: [编号]。
  • 配置邮件正文:在邮件正文中任意位置插入{submission_id}占位符,提交表单后该占位符会自动替换为实际的提交ID。

原短代码失效原因

之前的短代码依赖$_POST参数获取表单信息,但邮件内容渲染时,表单提交的POST请求已经结束,$_POST中的参数已不存在,因此无法获取到提交数据和ID。而使用Elementor官方钩子,能直接拿到表单提交的记录对象,其中已包含生成好的submission_id,确保数据有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:35:29