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

Elementor Pro表单邮件添加PHP自定义内容失败求助

解决Elementor Pro表单邮件追加自定义文本的问题

你的代码未生效核心原因在于钩子执行时机错误,以及HTML标签被不必要转义。以下是修正后的可行方案:

方案1:直接追加固定文本

使用专门处理邮件内容的elementor_pro/forms/email_content过滤器,比嵌套在new_record动作里更可靠:

add_filter('elementor_pro/forms/email_content', function($email_content, $record, $form_settings) {
    // 可选:仅针对指定表单生效,替换为你的表单ID
    if ($record->get_form_settings('form_id') !== '123') {
        return $email_content;
    }

    $custom_text = "<br>Additional Text";
    return $email_content . $custom_text;
}, 20, 3);

方案2:处理表单数据后追加内容

若需先处理用户提交的表单数据,再将结果纳入邮件,可结合动作与过滤器实现:

// 捕获并处理表单提交数据
add_action('elementor_pro/forms/new_record', function($record, $handler) {
    if (!($record instanceof \ElementorPro\Modules\Forms\Classes\Form_Record)) {
        return;
    }

    // 获取表单字段值,示例:获取名为"email"的字段
    $fields = $record->get('fields');
    $user_email = $fields['email']['value'] ?? '';

    // 自定义数据处理逻辑
    $processed_content = "<br>用户提交邮箱:{$user_email} | Additional Text";

    // 将处理结果存入表单记录元数据
    $record->update_meta('_custom_processed_content', $processed_content);
}, 10, 2);

// 在邮件内容中追加处理后的文本
add_filter('elementor_pro/forms/email_content', function($email_content, $record) {
    $processed_content = $record->get_meta('_custom_processed_content');
    if ($processed_content) {
        $email_content .= $processed_content;
    }
    return $email_content;
}, 20, 2);

关键修正说明

  1. 钩子选择:改用elementor_pro/forms/email_content过滤器,该钩子专为修改邮件内容设计,执行时机更精准。
  2. HTML标签:不要转义<br>标签,否则会显示为纯文本而非换行效果。
  3. 优先级设置:将过滤器优先级设为20(高于默认的10),确保自定义修改不会被默认逻辑覆盖。
  4. 表单针对性:通过form_id判断可仅对指定表单生效,避免影响其他表单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:20:13