如何移除WordPress站点Fluent Form的自定义邮件抄送规则
可能的规则存储位置及排查方案
一、站点文件层面(优先级最高,你卸载重装插件问题依旧,说明代码不在Fluent Form插件目录内)
- 检查
wp-content/mu-plugins目录:该目录下的PHP文件无需后台启用就会自动执行,是自定义代码常用的藏匿位置,把所有非官方默认的文件先重命名备份,测试抄送问题是否消失 - 检查当前激活主题/子主题目录下的
functions.php文件:搜索以下关键词:fluentform、stripe、抄送、CC、BCC、前开发的邮箱地址前缀/后缀 - 全局扫描
wp-content/uploads目录:该目录通常拥有写入权限,开发可能在此处藏匿了独立的自定义PHP文件,通过钩子注入到WordPress执行流程中,可全局搜索目录内所有PHP文件的内容,匹配上述关键词 - 整个站点PHP文件全局搜索:搜索Fluent Form Stripe支付相关的钩子关键词,比如
fluentform_before_stripe_process、fluentform_payment_completed、fluentform_email_header、wp_mail,这类钩子是注入抄送逻辑的常用入口
二、数据库层面
你直接搜索明文邮箱无结果,大概率是因为配置以序列化数组形式存储,直接匹配完整字符串无法命中:
- 打开
wp_fluentform_forms表,查看对应表单的form或settings字段,将字段值反序列化后逐一排查是否有隐藏的抄送邮箱配置 - 打开
wp_options表,搜索option_name包含fluentform、stripe的记录,同样将option_value反序列化后排查 - 可尝试搜索邮箱的部分片段(比如@前面的用户名、@后面的域名),避免序列化格式导致的匹配失败
三、临时解决方案
如果暂时找不到代码位置,可先在主题functions.php中添加以下代码强制拦截发往该邮箱的抄送:
add_filter( 'wp_mail', function( $args ) { $target_email = '替换为前开发的邮箱地址'; // 清理收件人 if ( is_array( $args['to'] ) ) { $args['to'] = array_filter( $args['to'], function( $email ) use ( $target_email ) { return trim( $email ) !== $target_email; } ); } else { if ( trim( $args['to'] ) === $target_email ) { $args['to'] = ''; } } // 清理抄送 if ( isset( $args['headers'] ) ) { if ( ! is_array( $args['headers'] ) ) { $args['headers'] = explode( "\n", $args['headers'] ); } $args['headers'] = array_filter( $args['headers'], function( $header ) use ( $target_email ) { return stripos( $header, 'Cc:' ) === false || stripos( $header, $target_email ) === false; } ); } return $args; } );
内容的提问来源于stack exchange,提问作者Брент Скофeлд
相关产品推荐
相关产品推荐

