搜索全站
插件 10 分钟阅读

WPForms 与 Fluent Forms 拖拽表单配置教程:字段、通知与条目

从字段拖拽到通知邮件、条目存储与提交后动作,本文完整演示 WPForms 与 Fluent Forms 的配置流程,并给出用钩子对接外部系统的代码示例。

U
UFO_PF 2020-08-21 · 阅读 10 分钟
WP 插件
阅读提示
本文约 3,685 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:拖拽表单省下的时间,容易在通知和条目上还回去

拖拽式表单插件的价值很直观:不用写表单标签,拖几个字段就能出一个能用的表单。WPForms 和 Fluent Forms 是目前最主流的两款,前者上手最简单、文档与扩展生态成熟,后者免费版功能给得更足(条件逻辑、多步表单等在免费版就有较高完成度,具体以官方当前版本为准)。

但真正决定表单能不能投入使用的,往往不是拖拽本身,而是后面三件事:通知邮件能不能准确送到对应的人、提交的条目存在哪里、能不能导出、提交之后要做什么(跳转、推送、入库)。这三件事配不明白,表单做得再漂亮也只是个摆设——客户填完,销售收不到,数据还查不到。

原理分析:两款插件的数据流是一样的

无论哪款插件,一次表单提交都遵循同一条链路:

阶段 发生什么 可介入的钩子
前端校验 必填、格式、reCAPTCHA / hCaptcha / Turnstile 各插件的校验过滤器
写入条目 保存到插件自建数据表 wpforms_process_complete、fluentform_before_insert_submission 等
发送通知 按通知模板调用 wp_mail() 通知模板、智能变量
提交后动作 显示确认信息 / 跳转页面 确认设置与相关钩子

两款插件都把条目存在自建数据表里,而不是 WordPress 的文章表。WPForms 使用 wp_wpforms_entries 与 wp_wpforms_entry_meta(表名前缀随站点设置),Fluent Forms 使用 wp_fluentform_submissions、wp_fluentform_submission_meta 与 wp_fluentform_entry_details。这一点很重要:它意味着条目不受文章修订、回收站机制影响,但也意味着常规的站点备份要确认包含这些表。

通知邮件依赖 wp_mail(),所以和 CF7 一样,最终还是要解决 SMTP 发信问题。智能变量方面,WPForms 常用 {all_fields} 输出全部字段,Fluent Forms 常用 {all_data};两者都支持管理员邮箱、站点地址等系统变量。

保姆级实操:完整走一遍配置

步骤1:搭建表单字段。 在编辑器里拖入 Name、Email、Phone、Select、Textarea 等字段。给每个字段设置清晰的 Label 和必填标记,注意勾选「隐藏标签」时字段名仍会成为导出 CSV 的列名,命名要规范。

步骤2:配置通知邮件。 在「Settings → Notifications」里设置收件人、主题与正文。建议按业务分流:销售线索发给销售组,技术支持发给技术组,用条件逻辑判断字段值决定收件人。正文模板示例:

主题:新的咨询 - {all_data}

全部字段:
{all_data}

提交时间:{embed_post.ID}
来源页面:{wp.site_url}

步骤3:配置确认动作。 在「Settings → Confirmation」里选择显示提示消息或跳转到感谢页。跳转型确认便于在 GA / 统计工具里做转化追踪,是外贸站常用做法。

步骤4:确认条目存储与导出。 提交一次测试,然后到插件的「Entries」查看是否落库,并测试导出 CSV。若条目为空,优先检查是否启用了「禁用条目存储」类选项(部分插件为合规提供该开关)。

步骤5:开启反垃圾。 两款插件都支持 reCAPTCHA、hCaptcha 或 Cloudflare Turnstile。面向国内用户的站点,推荐 Turnstile 或 hCaptcha——reCAPTCHA 在国内网络环境下加载不稳定,容易导致表单卡在提交状态。

步骤6:用钩子对接外部系统。 提交成功后推送到企业微信、飞书或 CRM。以 WPForms 为例,用按表单 ID 触发的动作钩子:

<?php
// 表单 ID 为 128 时,提交完成后推送到 Webhook
add_action( 'wpforms_process_complete_128', function ( $fields, $entry, $form_data ) {
    $payload = array();
    foreach ( $fields as $field ) {
        $payload[ 'field_' . $field['id'] ] = isset( $field['value'] ) ? $field['value'] : '';
    }
    wp_remote_post( 'https://hook.example.com/endpoint', array(
        'timeout' => 5,
        'headers' => array( 'Content-Type' => 'application/json' ),
        'body'    => wp_json_encode( $payload ),
    ) );
}, 10, 3 );

Fluent Forms 对应地在条目入库前处理:

<?php
// Fluent Forms:提交入库前记录日志 / 补字段
add_action( 'fluentform_before_insert_submission', function ( $insertData, $data, $form ) {
    if ( 3 !== (int) $form->id ) {   // 只对表单 ID 3 生效
        return;
    }
    $insertData['browser_lang'] = sanitize_text_field(
        $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? ''
    );
    return $insertData;
}, 10, 3 );

步骤7:核对条目表与备份范围。 确认备份方案包含插件的数据表,否则恢复站点时会丢失表单记录。

# 确认条目表存在且有数据(表名前缀按实际安装调整)
wp db query "SELECT COUNT(*) AS entries FROM wp_wpforms_entries"
wp db query "SELECT COUNT(*) AS subs FROM wp_fluentform_submissions"

步骤8:做一次端到端测试。 用真实邮箱提交,检查:前台提示、管理员收信、自动回信、条目落库、外部系统收到推送,五处都要确认。

常见踩坑

  1. 通知收件人用了站点管理员邮箱,结果人走茶凉。改用团队邮箱组,并定期检查。
  2. {all_fields} / {all_data} 输出为空。多因条件逻辑或字段被隐藏,检查字段是否在提交时被包含。
  3. reCAPTCHA 加载失败导致提交按钮无响应。国内网络访问 Google 服务不稳定,换成 Turnstile 或 hCaptcha。
  4. 条目表没进备份。只备份了 wp_posts 相关表,恢复后表单数据全丢。备份前确认数据库是整库导出。
  5. CSV 导出乱码。Excel 打开 UTF-8 CSV 默认按 GBK 解析,需要用「数据 → 从文本导入」并指定 UTF-8,或导出后转码。
  6. 案例:某站点的询价表单上线三个月,销售一直抱怨线索少。排查发现通知邮件用了站点管理员邮箱,而该邮箱的转发规则在半年域名迁移时失效;同时条目虽然正常落库,但没人去看。整改后把通知改为销售组邮箱,并给表单加了每周一次的条目统计邮件,线索量立刻「恢复」到正常水平——实际一直都有,只是没人收到。
  7. 上传字段的文件没有纳入合规管理。客户上传的身份证、营业执照存进了 uploads 目录且公开可访问,存在信息泄露风险。限制文件类型与大小,并禁止该目录被直接列目录访问。
  8. 多个表单插件并存。装了 WPForms 又装 Fluent Forms,会同时加载两套资源,拖慢页面。选定一个坚持用下去。

总结

两款插件的选择可以这样定:需要最省心的上手体验、丰富的官方扩展与文档,选 WPForms;希望在免费版就拿到条件逻辑、多步表单等能力,选 Fluent Forms。无论哪个,配置时都要走完「字段 → 通知 → 确认 → 条目 → 反垃圾 → 对接」六步,并做一次端到端验证。最容易出问题的不是拖拽,而是通知与条目这两处「看不见的地方」。如果更偏好无拖拽的手写方案,可以看Contact Form 7 常见配置问题与扩展;表单数据如何合规留存与导出,参考表单数据存储与导出(GDPR 考量)。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。