2026年11月12日

2026年11月12日

Gravity Forms 使用教學|建立表單、條件邏輯、通知郵件與確認訊息設定

本文是日文原文的在地化版本。 閱讀日文原文

Gravity Forms 是沒有在 WordPress.org 發布的付費表單外掛。可以從後台設定依條件顯示不同欄位的「條件邏輯」、依送出內容分流通知對象、把送出的資料(Entries)儲存到資料庫並匯出等功能。本文說明基本表單的製作方式,以及給開發者使用的掛鉤用法。授權內容與畫面的項目名稱,是 2026 年 11 月時對照 Gravity Forms 官方網站與文件(英文)所確認的內容。畫面以英文的項目名稱來寫。如果你是以中文顯示,表記可能會有所不同。

授權與可用的附加元件

依授權不同,可使用的網站數與附加元件也不同。

授權 網站數 主要附加元件
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 → Upload Plugin)中安裝並啟用。使用 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」中設定。建立表單後,會預先準備好 1 則給管理員的通知。用「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 動作撰寫處理。這個動作會在儲存 Entries 與寄出通知郵件之後執行。被判定為垃圾訊息的 Entries 也會執行,所以請先確認狀態再送出。另外,如果是 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 請事先在 wp-config.php 用 define( 'MY_SLACK_WEBHOOK_URL', '...' ); 寫好
	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)欄位這種有多個輸入欄的欄位,要用 '1.3'(名)、'1.6'(姓)這種帶小數點的 ID 來取出。Webhook 的 URL 是機密資訊,所以不要直接寫在程式碼中,也不要放進公開的儲存庫。

確認並匯出 Entries

送出的資料會儲存在 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 程式碼之前,請先在預備環境(staging)確認表單 ID 與欄位 ID 是否相符,以及運作是否正常。

對 WordPress 有疑問嗎?本站營運方位於日本,僅以日文回覆。 聯絡我們(日文)

お気軽にご相談ください

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