MW WP FormからGravity Formsへ移行した話:確認画面つきフォームを作り直す
この記事のAI要約
長年利用してきたWordPressのフォームプラグイン「MW WP Form」が、ファイル・画像アップロード機能の削除を2026年に予定しているため、同機能を活用している自社サイトは早急な対応が求められました。特に日本の企業サイトで一般的な「入力画面 → 確認画面 → 完了画面」というフォーム構成を維持しつつ、安全性や拡張性を考えた結果、商用で継続的にアップデートされている「Gravity Forms」へ移行することを決断しました。この記事では、移行理由やプラグイン比較、確認画面つきフォームの実装手順を紹介し、同様の課題を抱えるWeb担当者や開発者にとって参考になる内容となっています。
gpt-4.1-miniによる自動要約
長年、WordPressのフォームプラグインとして MW WP Form を使ってきました。
シンプルで扱いやすく、確認画面も作りやすく、制作現場ではかなり重宝していたプラグインです。
特に「入力画面 → 確認画面 → 完了画面」という日本の企業サイトではおなじみのフォーム遷移を実装しやすかったこともあり、弊社でも長く利用してきました。
2023年に新規開発を終了し、メンテナンス中心の対応に移行してからも、有効インストール数20万件超を維持している人気プラグインでもあります。
そんなMW WP Formですが、管理画面上に以下のアラートが表示されるようになりました。
内容としては、
MW WP Form: Notice of feature removal
The [mwform_file] and [mwform_image] shortcodes will be removed in version 5.2 (planned for release within 2026).(日本語訳)
MW WP Form:機能削除のお知らせ
[mwform_file] および [mwform_image] ショートコードは、バージョン 5.2 で削除される予定です。
バージョン 5.2 は、2026年内のリリースが予定されています。
という内容です。
弊社サイトでも、お見積り依頼フォームでファイルアップロードフィールドを利用していました。
サイトマップやRFP、構成資料などを添付してもらう用途です。
そのため、いずれ対応が必要になることは明らかでした。
「それならこの機会に」と意を決して、MW WP Formから別のフォームプラグインへの載せ替えを検討し、最終的に Gravity Forms を採用しました。
この記事では、移行先の検討、Gravity Formsを選んだ理由、そして実際に確認画面つきのフォームを実装した流れをまとめます。
INDEX
プラグイン入れ替えの背景
MW WP Formでファイル・画像フィールド削除予定の予告が出た
MW WP Formは、これまで多くのWordPressサイトで利用されてきたフォームプラグインです。
弊社でも、問い合わせフォームや見積り依頼フォームで利用してきました。
特に便利だったのは、やはり 確認画面 です。
一般的な日本企業のコーポレートサイトでは、フォーム送信手順として、
入力画面
↓
確認画面
↓
完了画面
という流れを採用しているものが多く見られます。
MW WP Formはこの構成を作りやすく、確認画面のHTMLも比較的コントロールしやすいプラグインでした。
一方で、近年の開発状況やメンテナンス体制を考えると、今後の新規案件で積極的に採用し続けるには慎重な判断が必要だと感じていました。
そして今回、ファイル・画像フィールドの削除予定が出たことで、自社サイトでも本格的に移行を検討することにしました。
今回問題になったのは、以下のショートコードです。
[mwform_file]
[mwform_image]
これらが今後のバージョンで削除予定とされているため、ファイルアップロードを使っているフォームは、そのままでは将来的に動作しなくなる可能性があります。
自社サイトでもアップロード機能を使っていた
弊社サイトでは、見積り依頼フォームにファイルアップロード項目を設置していました。
用途としては、たとえば以下のような資料を添付してもらうためです。
- サイトマップ
- RFP / 提案依頼書
- 画面構成資料
- 既存サイトの資料
- 参考資料
Webサイト制作やCMS開発の見積りでは、テキストだけでは判断しづらいケースが多くあります。
資料を添付してもらえると、要件の粒度が一気に上がります。
そのため、ファイルアップロードは実務上かなり重要な項目です。
一方で、ファイルアップロードはフォームプラグインの中でも特にリスクの高い領域です。
拡張子、MIMEタイプ、ファイル名、保存先、一時ファイル、公開URL、サーバー側での実行可否など、考えるべきことが多くあります。
フォームプラグインだけで安全性を完結させるのは難しく、サーバー側の対策も必要です。
弊社サイトでは /uploads/ 配下でスクリプトが実行されないように対策していますが、それでもフォームプラグイン側がメンテナンス中心の状態になっている以上、アップロード機能を使い続けることには不安がありました。
そこで、MW WP Formからの載せ替えを進めることにしました。
他のフォームプラグイン候補を比較
移行先として検討したのは、主に以下のフォームプラグインです。
- Contact Form 7
- Snow Monkey Forms
- Fluent Forms
- Formidable Forms
- Gravity Forms
Contact Form 7は非常に有名で、国内のみならず海外での利用実績も多いプラグインです。
弊社のお客様からの導入依頼も多く、確認画面不要であればかなり有力な候補でした。
Snow Monkey Formsは国産で扱いやすく、MW WP Formの開発者でもあるキタジマタカシさんが現在も開発を続けているプラグインです。
Fluent FormsやFormidable Formsも候補でした。
ただ、弊社としては、海外製でも商用プラグインとして継続的にメンテナンスされており、拡張性が高く、Webhook連携や外部APIとの連携がしやすいものを選びたいと考えました。
業務用途では、現在でも「入力画面 → 確認画面 → 完了画面」という流れを前提にしたフォーム実装のご依頼が多く、確認画面を柔軟に実装・調整できることも、移行先を選定するうえで重要なポイントでした。
最終的に選んだのが Gravity Forms です。
結果、Gravity Formsを選定
Gravity Formsを選んだ理由は、主に以下です。
- 商用プラグインとして継続開発されている
- フォーム項目の自由度が高い
- 確認画面をフックで実装できる
- Webhook連携がしやすい
- Admin onlyフィールドが使える
- 通知メールのConditional Logicが使いやすい
- CRM連携やGA4連携に拡張しやすい
特に便利だったのは、Admin onlyフィールド です。
これはユーザーには表示せず、管理画面や通知、Webhook連携用に内部的な値を保存できるフィールドです。
他のフォームプラグインでもhiddenフィールドを使用することが可能ですが、hiddenフィールドは画面上には表示されないもののHTMLソース上には出力されるため、ユーザー側から値を確認できてしまいます。
一方、Admin onlyフィールドはフロント画面には出力されず、管理画面や通知メール、Webhook連携などの内部処理用の項目として扱うことができます。
今回の移行では、AI判定スコアの保存先にこのAdmin onlyフィールドを使っています。
この記事では確認画面付きフォーム構築を主題としていますので、この件については別記事でご紹介させていただく予定です。
Gravity Formsでのフォーム開発
弊社サイトで必要なフォーム機能を整理すると、主な要件は以下のとおりです。
- 入力画面を表示する
- 確認画面を表示する
- 完了画面にリダイレクトする
- ファイルアップロードを使う
- ファイル名やURLではなく、確認画面では添付件数だけ表示する
- バリデーションメッセージを調整する
- メールアドレスのNGドメインを拒否する
- 管理者通知、自動返信メールを送る
- Webhook連携できるようにする
MW WP Formからの移行で一番ギャップがあったのは、やはり確認画面です。
MW WP Formでは確認画面を前提に組み立てていましたが、Gravity Formsではフックを使って確認画面を組み立てる必要があります。
確認画面の実装手順
今回使った中心的なフックは以下です。
add_filter( 'gform_review_page_XX', 'function_name' );
このフィルターフックでは、XXの部分にフォームIDを設定し、関数名を定義することでフォームごとに確認画面をカスタマイズすることができます。
実装の流れは以下のとおりです。
- 確認画面を有効化する
- 入力値を取得する
- 確認画面用のHTMLを組み立てる
- 空欄項目はスキップする
- 姓名は結合して表示する
- 添付資料は件数だけ表示する
- 戻るボタン・送信ボタンのラベルを変更する
考え方としては、MW WP Formの確認画面と同じように、送信前に入力内容を一覧で見せる形です。
Gravity Formsには {all_fields} という、入力内容をまとめて出力できる便利なマージタグも用意されています。
ただ、実際に確認画面として使おうとすると、出力されるHTML構造や表示順、項目ごとの見せ方を細かく調整しづらく、今回のように既存サイトのデザインに合わせて整えたい場合には少し扱いにくい印象でした。
そのため、Gravity Formsのデフォルト出力に任せるのではなく、DOMを自前で組み立てる方針にしました。
具体的には、以下のような独自クラスで確認画面を構成しています。
<div class="p-form-review">
<dl class="p-form-review__list">
<div class="p-form-review__item">
<dt class="p-form-review__term">会社名</dt>
<dd class="p-form-review__description">株式会社サンプル</dd>
</div>
</dl>
</div>
このようにしておくと、既存のサイトCSSに合わせて調整しやすくなります。
その他のカスタマイズ
Gravity Formsは海外製のプラグインということもあり、標準のフォーム挙動や文言、画面構成は海外向けの仕様に近い印象です。
そのため、今回は日本の企業サイトで求められやすい「確認画面」や細かな文言調整、表示レイアウトに合わせて、いくつかカスタマイズを行いました。
gform_validation
まず、フォーム外の見出しやリード部分ですが、MW WP Formは確認画面を前提にした作りになっているためあまり考える必要がありませんでしたが、Gravity Formsでは確認画面を自前で制御する必要があります。
ここで単純に「確認画面へ進む投稿かどうか」だけで入力画面用の説明文を出し分けると、バリデーションエラー時にも確認画面扱いになってしまい、入力画面用の説明文が消えてしまうケースがありました。
そのため、gform_validation でバリデーション失敗時のフラグを持たせ、エラー時は入力画面として扱うようにしています。
// 見積り依頼フォーム:バリデーション失敗フラグ
if ( ! function_exists( 'form_validation_failed_flag' ) )
{
function form_validation_failed_flag( $validation_result )
{
if ( empty( $validation_result['is_valid'] ) )
{
$GLOBALS['estimate_form_validation_failed'] = true;
}
return $validation_result;
}
}
add_filter( 'gform_validation_XX', 'form_validation_failed_flag', 99 );
こんな感じのフィルターを設定し、ショートコードを使用して各ページの見出しを出し分けしています。
gform_validation_message
次に、バリデーションエラーの際の表示ですが、Gravity Forms標準では下記のように表示されます。
うーん…直訳なんでしょうけど、なんだか少しアンケートフォームみたいですよね。
フィルターフックを使用して、上記のように変更しました。
gform_field_validation
MW WP Formでは独自のバリデーションルールを作成して、特定ドメインのフォーム送信を不可にする、というカスタマイズを行っていました。
参考記事
現在はAI判定でいわゆるフォーム営業の対策をしているので絶対に必要というわけではなかったのですが、いろいろなニーズに対応しなければならない立場上、同様のバリデーションが設定できるか検証する意味でも実装してみました。
if ( ! function_exists( 'gform_validation_rule_spamcheck' ) )
{
function gform_validation_rule_spamcheck( $result, $value, $form, $field )
{
// 独自のバリデーションルールを設定
return $result;
}
}
add_filter( 'gform_field_validation', 'gform_validation_rule_spamcheck', 10, 4 );
こんな感じで問題なく実装できました。
CRM連携
弊社ではお問い合わせ内容をCRMに連携するためにWebhookを使用していますが、こちらはむしろGravity Formsの方が簡単に設定できました。
Gravity Forms公式からWebhookアドオンがリリースされていますので、専用のUIで設定するだけでした。
ペイロードに含める項目もフォームの設定項目から自由に選択できるため、不要なデータまで送信する必要がありません。
AI判定など
この他にも、以前の記事で紹介したAI判定機能(営業目的の問い合わせをフィルターする機能)もアップデートしました。
今回は単に営業メールを除外するだけでなく、問い合わせの質をスコアリングし、マーケティングにも応用できるように改良しています。
このあたりは別記事でまとめる予定です。
参考記事
まとめ
MW WP Formは、長年とても便利に使わせてもらってきたフォームプラグインです。
特に確認画面を作りやすかったことは大きなメリットでした。
また、開発者であるキタジマタカシさんは、WordPressコミュニティにも多大な貢献をされてきた方です。
これまで同プラグインを利用させていただいた立場として、キタジマさん、そしてその後のメンテナンスに対応してくださっている株式会社 Webの相談所様に、深く敬意を表したいと思います。
今回、Gravity Formsへ移行してみて感じたのは、最初の学習コストはあるものの、かなり柔軟に作り込めるということです。
確認画面も、多彩なフックを使えばほぼ意図した通りの形で実装できます。
弊社でもフォームの設計、確認画面、完了画面、通知、外部連携まで見直す良いタイミングにもなりました。
以下のような要件がある場合は、Gravity Formsの導入も有力な選択肢になります。
- 確認画面が必要
- ファイルアップロードが必要
- 通知メールを細かく制御したい
- Webhook連携したい
- CRMと連携したい
- AI判定など独自処理を挟みたい
同様のケースでお困りの企業様や、この機会にWebフォームを見直したいとお考えの方は、ぜひお気軽にお問い合わせください。