为Contact Form 7自动回复添加条件时代码失效问题排查
解决Contact Form 7选择「EV Car Solutions」时自动回复失效问题
下面针对你的代码问题,逐一排查并给出修正方案:
常见问题排查点
- 表单ID是否正确:确认
371是目标Contact Form 7表单的真实ID。你可以在表单编辑页面的地址栏中找到,例如wp-admin/admin.php?page=wpcf7&post=371里的371就是表单ID,若不符请替换为正确值。 - 字段名是否匹配:检查表单中下拉字段的
name属性是否为menu-175、邮箱字段的name是否为your-email。比如表单代码里的下拉应该是[select menu-175 "选项1" "EV Car Solutions"],邮箱是[email* your-email](注意*不影响posted_data中的键名)。 - 下拉选项值是否一致:如果你的下拉选项是带值标签的格式(比如
[select menu-175 "EV Car Solutions:ev-sol"]),那么posted_data中存储的是ev-sol而非显示文本,需要将判断条件改为对应的值。 - 服务器邮件配置:部分服务器默认禁用
wp_mail或未配置发件人,会导致邮件发送失败,可通过调试日志确认。
修正后的代码
以下代码添加了错误检查和调试日志,能更精准定位问题:
add_action( 'wpcf7_mail_sent', 'contact_form_autoresponders' ); function contact_form_autoresponders( $contact_form ) { // 替换为你的目标表单ID $target_form_id = 371; if ( $target_form_id !== $contact_form->id ) { return; } $submission = WPCF7_Submission::get_instance(); // 检查提交实例是否有效 if ( ! $submission ) { error_log( 'CF7自动回复:无法获取提交数据实例' ); return; } $posted_data = $submission->get_posted_data(); // 检查必填字段是否存在 if ( ! isset( $posted_data['menu-175'], $posted_data['your-email'] ) ) { error_log( 'CF7自动回复:提交数据缺少menu-175或your-email字段' ); return; } // 统一处理下拉选项值(兼容数组/字符串格式) $selected_option = $posted_data['menu-175']; $selected_option = is_array( $selected_option ) ? trim( $selected_option[0] ) : trim( $selected_option ); if ( 'EV Car Solutions' === $selected_option ) { $recipient = trim( $posted_data['your-email'] ); $subject = 'Auto-response for EV car charger selection'; $message = 'Thank you for selecting EV Car Solutions. We will get back to you shortly.'; // 发送邮件并记录结果 $send_result = wp_mail( $recipient, $subject, $message ); error_log( $send_result ? "CF7自动回复:邮件已发送至 {$recipient}" : "CF7自动回复:邮件发送失败,收件人 {$recipient}" ); } }
调试方法
- 开启WordPress调试:在
wp-config.php中添加以下代码,提交表单后查看wp-content/debug.log文件,获取错误详情:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true );
- 临时添加
var_dump($posted_data); exit;到函数中,查看实际提交的字段值,确认下拉选项的真实内容。
内容的提问来源于stack exchange,提问作者masudul karim
相关产品推荐
相关产品推荐

