2026年11月12日
2026年11月12日
Gravity Forms 的用法|创建表单、条件逻辑、通知邮件与确认消息的设置
本文是日语原文的本地化版本。 阅读日语原文
Gravity Forms 是一款没有在 WordPress.org 上分发的付费表单插件。根据条件显示或隐藏字段的“条件逻辑”、按提交内容分配通知收件人、把提交的数据(Entries)保存到数据库并导出等,都可以在后台中设置。本文介绍基本的表单制作方法,以及面向开发者的钩子用法。许可证的内容和界面的项目名称,是 2026 年 11 月对照 Gravity Forms 官网和文档(英文)确认过的内容。界面按英文的项目名称书写。如果以中文显示,写法可能会不同。
许可证与可用的附加组件
根据许可证的不同,可使用的站点数和附加组件(Add-On)也不同。
| 许可证 | 站点数 | 主要的附加组件 |
|---|---|---|
| Basic | 1 | Mailchimp、HubSpot、reCAPTCHA 等基础附加组件 |
| Pro | 3 | 在 Basic 的基础上,加上 Stripe、PayPal Checkout、Square、Zapier、Slack 等 |
| Elite | 无限制 | 所有附加组件(Webhooks、User Registration、Signature、Survey 等)。也支持多站点 |
把提交的数据发送给外部系统的 Webhooks 附加组件,只有 Elite(以及面向非营利组织的许可证)才能使用。支付用的 Stripe 和 PayPal Checkout 是 Pro 及以上。购买之前,请在官方的价格页面确认所需的附加组件包含在哪种许可证中。
安装与注册许可证密钥
从 Gravity Forms 官网的账号页面下载插件的 ZIP 文件,通过“插件 (Plugins) → 安装插件 (Add New) → 上传插件”进行安装并启用。使用 WP-CLI 的话如下。
wp plugin install /path/to/gravityforms.zip --activate
许可证密钥在“Forms → Settings”页面中输入。需要把相同的设置分发到多个环境时,也可以用常量写入 wp-config.php。写入常量后,设置页面中的许可证密钥栏会变成无法修改的显示。
define( 'GF_LICENSE_KEY', 'YOUR-LICENSE-KEY-HERE' );
创建并放置表单
- 打开后台的“Forms → New Form”,给表单命名并创建。
- 从右侧的“Add Fields”中,放置姓名(Name)、电子邮件地址(Email)、电话号码(Phone)、选项(Drop Down)、正文(Paragraph Text)、同意勾选(Consent)等字段。
- 点击各字段会打开设置。对必填的项目,打开“Required”。
- 用“Save Form”保存。
要把表单放到页面上,请在区块编辑器中添加“Gravity Forms”区块,再选择创建好的表单。用短代码放置时,写成下面的形式,id 是表单列表中显示的表单 ID。
[gravityform id="1" title="false"]
用条件逻辑显示或隐藏字段
像“只有当咨询类型为‘招聘相关’时,才显示上传简历的栏位”这样的显示或隐藏,用条件逻辑(Conditional Logic)来设置。
- 在表单编辑器中,点击想要控制显示的字段(例如:简历的文件上传)。
- 打开字段设置中的“Conditional Logic”,把“Enable Conditional Logic”打开。
- 选择“Show(显示)”或“Hide(隐藏)”,以及条件是“All(满足全部)”还是“Any(满足任一)”。
- 在条件行中,选择作为依据的字段(咨询类型)、比较方式(is)、值(招聘相关)。点击行旁边的加号可以添加条件。
通知邮件和确认消息中,也都可以分别设置条件逻辑。
设置通知邮件
通知邮件在“Forms → 目标表单 → Form Settings → Notifications”中设置。创建表单后,会准备好一条发给管理员的通知。用“Add New”可以添加自动回复等通知。
| 项目 | 内容 |
|---|---|
| Send To | 发送对象。“Enter Email”是固定的地址,“Select a Field”是表单中的电子邮件地址栏,“Configure Routing”是根据输入内容来分配收件人 |
| From Email | 发件人。{admin_email}(WordPress“设置 → 常规”中的管理员电子邮件地址)或固定的地址 |
| Reply To | 回复地址。在发给管理员的通知中,放入咨询者电子邮件地址栏的合并标签,回复会更方便 |
| Subject / Message | 主题和正文。可以用合并标签插入输入的内容 |
合并标签是用来插入所提交的值的标记。字段的值写成 {标签:字段ID} 的形式(例:{Name:1},也可以省略标签写成 {:1}),{all_fields} 会把所有输入内容做成表格插入。从消息栏右上角的合并标签按钮中选择,就不需要查字段 ID 即可输入。
如果把发件人地址设为与站点相同域名的地址,就不容易被当作垃圾邮件。请避免把咨询者的电子邮件地址设为发件人,而是放进 Reply To。
提交后的确认消息
提交后的显示,在“Form Settings → Confirmations”中设置。类型有下面 3 种。
- Text:在表单的位置显示消息(初始设置)
- Page:跳转到站内的固定页面
- Redirect:跳转到指定的 URL
如果要准备提交完成页面,用于广告和访问分析的统计,请选择 Page 或 Redirect。
用 PHP 添加输入检查
后台设置不够用的输入检查,可以用 gform_field_validation 过滤器来添加。在钩子名称后面加上 _表单ID_字段ID,就只会应用到那个字段。下面的示例,验证输入到表单 ID 1 的字段 ID 3 中的电话号码(以日本的电话号码格式为例)。把它写在主题的 functions.php,或自己写的插件中。
<?php
// 验证表单 ID 1、字段 ID 3 的电话号码
add_filter( 'gform_field_validation_1_3', function ( $result, $value, $form, $field ) {
if ( ! is_string( $value ) || '' === $value ) {
return $result; // 未输入时如何处理,交给字段的“Required”设置
}
$digits = str_replace( array( '-', ' ' ), '', $value );
if ( ! preg_match( '/^0\d{9,10}$/', $digits ) ) {
$result['is_valid'] = false;
$result['message'] = '电话号码请输入以 0 开头的 10 位或 11 位数字(可以使用连字符)。';
}
return $result;
}, 10, 4 );
表单 ID 和字段 ID,在表单编辑器中选中字段时会显示。重新创建表单后 ID 会改变,所以请确认正式环境与开发环境的 ID 是否一致。
提交后向外部发送通知
在没有 Webhooks 附加组件的许可证下,如果想在每次提交时通知 Slack 等,可以用 gform_after_submission 动作来编写处理。这个动作会在条目保存和通知邮件发送完成之后执行。被判定为垃圾信息的条目也会执行,所以要先确认状态再发送。另外,如果是 Pro 及以上的许可证,也可以通过 Slack 附加组件或 Zapier 附加组件来设置。
<?php
// 表单 ID 1 提交后,通知 Slack 的 Incoming Webhook
add_action( 'gform_after_submission_1', function ( $entry, $form ) {
if ( 'spam' === rgar( $entry, 'status' ) ) {
return;
}
// Webhook 的 URL 用 define( 'MY_SLACK_WEBHOOK_URL', '...' ); 写在 wp-config.php 中
if ( ! defined( 'MY_SLACK_WEBHOOK_URL' ) ) {
return;
}
wp_remote_post( MY_SLACK_WEBHOOK_URL, array(
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => wp_json_encode( array(
'text' => sprintf( '新的咨询: %s', rgar( $entry, '1' ) ),
) ),
'timeout' => 5,
) );
}, 10, 2 );
rgar( $entry, '1' ) 是字段 ID 1 的值。像姓名(Name)字段这样有多个输入栏的字段,要用带小数点的 ID 来取出,例如 '1.3'(名)、'1.6'(姓)。Webhook 的 URL 是机密信息,所以不要直接写进代码,也不要放进公开的仓库。
查看并导出条目
提交的数据会保存在 WordPress 的数据库中,可以在“Forms → Entries”中查看列表。要导出为 CSV,请打开“Forms → Import/Export”,在“Export Entries”中选择表单,指定要导出的项目和期间后下载。
从 PHP 中取出时,使用 GFAPI::get_entries()。下面是用 WP-CLI 查看最新 10 条的示例。
wp eval 'echo wp_json_encode( GFAPI::get_entries( 1, array(), null, array( "offset" => 0, "page_size" => 10 ) ) );'
注意点
- 提交的数据中包含个人信息。如果不需要保存,请事先规定处理办法,例如在表单设置中确定保存期限并删除,不要把导出的 CSV 放着不管。
- 收不到通知邮件时,多数情况下原因不在 Gravity Forms,而在服务器的邮件发送。使用通过 SMTP 发送的插件,有时可以改善。
- 添加 PHP 代码之前,请先在预发布环境中确认表单 ID 和字段 ID 是否正确、运行是否正常。
关于 WordPress 有疑问?本站运营方位于日本,仅以日语回复。 联系我们(日语)