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' );

创建并放置表单

  1. 打开后台的“Forms → New Form”,给表单命名并创建。
  2. 从右侧的“Add Fields”中,放置姓名(Name)、电子邮件地址(Email)、电话号码(Phone)、选项(Drop Down)、正文(Paragraph Text)、同意勾选(Consent)等字段。
  3. 点击各字段会打开设置。对必填的项目,打开“Required”。
  4. 用“Save Form”保存。

要把表单放到页面上,请在区块编辑器中添加“Gravity Forms”区块,再选择创建好的表单。用短代码放置时,写成下面的形式,id 是表单列表中显示的表单 ID。

[gravityform id="1" title="false"]

用条件逻辑显示或隐藏字段

像“只有当咨询类型为‘招聘相关’时,才显示上传简历的栏位”这样的显示或隐藏,用条件逻辑(Conditional Logic)来设置。

  1. 在表单编辑器中,点击想要控制显示的字段(例如:简历的文件上传)。
  2. 打开字段设置中的“Conditional Logic”,把“Enable Conditional Logic”打开。
  3. 选择“Show(显示)”或“Hide(隐藏)”,以及条件是“All(满足全部)”还是“Any(满足任一)”。
  4. 在条件行中,选择作为依据的字段(咨询类型)、比较方式(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 有疑问?本站运营方位于日本,仅以日语回复。 联系我们(日语)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲