2026年5月20日
2026年5月20日
Gravity Formsの基本的な使い方と設定手順
はじめに
Gravity Formsは高機能な有料フォームプラグインです。条件分岐・ファイルアップロード・決済連携・Webhook送信など企業サイトに必要な機能が揃っています。基本的なフォーム作成から実務で使う高度な設定まで解説します。
症状・原因
- お問い合わせフォームに複雑な条件分岐が必要
- フォーム送信データを外部システム(CRM・Slack等)に自動送信したい
- 入力内容に応じて送信先メールアドレスを変えたい
- フォームデータをWordPressのデータベースに保存したい
解決手順
ステップ1:インストールと有効化
Gravity FormsはWordPress.orgには掲載されていない有料プラグインです:
# 公式サイトからZIPをダウンロード後
wp plugin install /path/to/gravityforms.zip --activate
# ライセンスキーを設定
wp eval "GFCommon::update_key('YOUR_LICENSE_KEY');"
ステップ2:基本フォームを作成する
フォーム → 新規追加
→ フォーム名: お問い合わせフォーム
→ フィールドを追加:
- テキスト(氏名)
- メール(メールアドレス)
- テキスト(電話番号)
- ドロップダウン(お問い合わせ種別)
- 段落テキスト(お問い合わせ内容)
- チェックボックス(個人情報取り扱いに同意する)
→「更新」
ステップ3:条件分岐を設定する
フォーム → フォームを選択 → フィールドを選択
→「詳細設定」タブ →「条件を有効にする」✓
→ 表示する / 非表示にする
→ 条件: お問い合わせ種別 が「採用に関して」の場合 → 履歴書フィールドを表示
PHP でカスタム検証を追加:
// functions.php — 電話番号フォーマット検証
add_filter('gform_validation', function(array $validation_result) {
$form = $validation_result['form'];
if ($form['id'] !== 1) return $validation_result;
foreach ($form['fields'] as &$field) {
if ($field->label !== '電話番号') continue;
$value = rgpost("input_{$field->id}");
if (!preg_match('/^\d{10,11}$/', str_replace('-', '', $value))) {
$field->failed_validation = true;
$field->validation_message = '電話番号は10〜11桁の数字で入力してください。';
$validation_result['is_valid'] = false;
}
}
$validation_result['form'] = $form;
return $validation_result;
});
ステップ4:通知メールを設定する
フォーム → 設定 →「通知」タブ →「通知を追加」
→ 名前: 管理者通知
→ 送信先: admin@example.com
→ 差出人メール: {admin_email}
→ 件名: 【お問い合わせ】{:1}(氏名フィールドのマージタグ)
→ メッセージ: {all_fields}(全フィールドを自動挿入)
→「通知を追加」(自動返信用)
→ 名前: 自動返信
→ 送信先: {メールフィールドのマージタグ}
→ 件名: お問い合わせを受け付けました
ステップ5:Webhookで外部システムに送信する
フォーム → 設定 →「Webhooks」タブ(Webhook Addon必要)
→「Webhookを追加」
→ URL: https://hooks.slack.com/services/xxx/yyy/zzz
→ メソッド: POST
→ フォーマット: JSON
→ フィールドマッピング:
text → "【問い合わせ】{氏名}: {内容}"
// functions.php — 送信後にSlackへ通知(Webhookアドオンなし版)
add_action('gform_after_submission', function(array $entry, array $form) {
if ($form['id'] !== 1) return;
wp_remote_post('https://hooks.slack.com/services/xxx', [
'body' => json_encode([
'text' => sprintf('新しいお問い合わせ: %s', rgar($entry, '1')),
]),
'headers' => ['Content-Type' => 'application/json'],
]);
}, 10, 2);
ステップ6:エントリーをエクスポートする
# WP-CLIでエントリーを確認
wp eval "echo json_encode(GFAPI::get_entries(1, [], [], ['offset'=>0,'page_size'=>10]));"
注意事項
- Gravity Formsはライセンスによって使えるアドオンが異なります(Basic・Pro・Elite)
- フォームデータはデフォルトでWordPressのDBに保存されます(GDPRに注意)
- 決済連携(Stripe・PayPal)はPro以上のライセンスが必要です
まとめ
Gravity Formsは条件分岐・カスタム検証・Webhook送信・自動返信メールまでgform_validation・gform_after_submissionフックで柔軟に制御できます。フォームID単位で処理を分岐させることで複数フォームを効率よく管理できます。