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

如何通过代码在Contact Form 7中添加自定义邮件内容?问题排查

解决Contact Form 7发送邮件前添加自定义消息到正文的问题

你的代码存在几个关键错误,导致无法正常添加自定义消息,以下是问题分析和修正方案:

问题点

  • 钩子参数顺序错误:wpcf7_mail钩子的回调参数顺序应为$mail(邮件配置数组)在前,$contact_form(表单对象)在后,原代码顺序颠倒,无法正确读取邮件内容。
  • 未返回修改后的邮件数组:回调函数必须返回修改后的邮件配置,否则CF7不会应用你的修改。
  • 变量未定义:$field_name和$field_value未声明,需要从表单提交数据中获取具体字段值。
  • str_replace参数缺失:str_replace需要三个参数(搜索值、替换值、目标字符串),原代码缺少目标字符串参数。

修正后的代码

add_action( 'wpcf7_mail', 'my_custom_contact_form_7_mail_function', 10, 2 );

function my_custom_contact_form_7_mail_function( $mail, $contact_form ) {
    // 获取表单提交的所有字段数据
    $posted_data = $contact_form->get_posted_data();
    
    // 替换为你表单中的实际字段名,比如"your-name"或"email"
    $target_field = 'your-name';
    $field_value = isset( $posted_data[$target_field] ) ? $posted_data[$target_field] : '未填写';
    
    // 构建自定义消息
    $custom_message = '这是我的自定义消息。';
    $custom_message .= ' ' . $target_field . ': ' . $field_value;
    
    // 将邮件正文中的[custom-message]替换为自定义内容
    if ( isset( $mail['body'] ) ) {
        $mail['body'] = str_replace( '[custom-message]', $custom_message, $mail['body'] );
    }
    
    // 必须返回修改后的邮件配置,CF7才会使用修改后的内容
    return $mail;
}

注意事项

  1. 请将代码中的$target_field值替换为你表单里的实际字段名(比如你的表单字段是name就改成name)。
  2. 你的邮件设置中已经添加了[custom-message]标签(从截图可见),这部分无需修改。
  3. 将修正后的代码添加到主题的functions.php文件后,测试表单提交即可看到自定义消息出现在邮件正文中。

Contact Form 7邮件设置截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:17:14