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' );
建立表單並放置
- 開啟後台的「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」中設定。建立表單後,會預先準備好 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 有疑問嗎?本站營運方位於日本,僅以日文回覆。 聯絡我們(日文)