LW Simple Forms
LW Simple Forms は、カスタマイズ可能なフォームを作成できる多機能な WordPress フォームプラグインです。日本式のワークフローである完全なフォーム送信プロセスをサポートしています:
- 入力画面 – ユーザーが情報を入力
- 確認画面 – ユーザーが送信前に入力内容を確認
- 完了画面 – 送信成功後のお礼メッセージ
このプラグインは、確認が不要な場合のシンプルなワンステップの送信プロセスもサポートしています。
対応するすべてのフィールドタイプを含むサンプルフォームが初回有効化時に自動的に作成されるため、すぐに使い始めることができます。
重要: キャッシュプラグインとの互換性 キャッシュプラグイン(例: WP Super Cache、W3 Total Cache、WP Total Cache、LiteSpeed Cache)やCDN(例: Cloudflare)を使用している場合、キャッシュされたページはPOSTデータを処理しないため、フォーム送信が正しく動作しない場合があります。フォームページのURL(入力、確認、完了、エラー)をキャッシュから除外してください。
CSSスタイリング このプラグインはフォーム表示用のフロントエンドCSSを含みません。テーマのスタイルシートを使用してフォームのスタイルを設定してください。HTML/CSSサンプルはプラグインのウェブサイトで参考用に公開しています。
開発コンセプト
-
HTML ファーストアプローチ: このプラグインは、プラグインの制限に適応することを強制せず、設計された HTML フォーム、確認画面、エラー画面を忠実に再現するように設計されています。フォームはお使いのデザインに合わせて適応し、その逆ではありません。
-
Web プロフェッショナル向け:LW Simple Forms は、フロントエンド用の CSS や HTML テンプレートを提供しません。これは、フォーム画面をすでに設計しており、機能を実装する方法が必要な Web デザイナーや開発者向けに特別に作成されています (HTML/CSS サンプルは参考のために利用可能です)。
-
ミニマリスト哲学: このプラグインは意図的にミニマリストアプローチを維持し、過剰な機能よりもコア機能に焦点を当てています。サイトの速度とデータ使用量の最小化を優先し、ウェブサイトを効率的に運用できるようにしています。
主な機能
- 完全なフォームワークフロー: 入力画面、エラー画面、確認画面、完了画面を備えたフォームを作成
- 柔軟なデザイン: 独自の HTML で各画面をカスタマイズ
- フォームバリデーション: 各入力フィールドのサーバーサイドとクライアントサイドの検証 (必須フィールド、メール形式、電話番号検証)
- メール通知: 管理者とユーザーの両方に確認メールを送信
- セキュリティ機能:CSRF 保護、データサニタイズ、入力検証、安全なデータ処理
- 複数のフィールドタイプ: テキストフィールド、テキストエリア、チェックボックス、ラジオボタン、セレクトメニュー、マルチセレクトメニューのサポート
- ショートコードサポート: ショートコードによる WordPress ページへの簡単な統合
- カスタム HTML: 完全な HTML 自由度でフォームをデザイン
- マルチフォームサポート: 単一のサイトで複数のフォームを作成および管理
- データベースストレージ: フォームデータはセッションや Cookie ではなく、一時的にデータベースに保存され、無制限の送信データが可能
- JavaScript/非 JavaScript サポート:JavaScript が無効な環境 (スクリーンリーダーなど) でもフォームは正常に機能
- フィールド検証: カスタマイズ可能なエラーメッセージを備えた広範な検証システム
- reCAPTCHA v3対応: スパム対策として Google reCAPTCHA v3を任意で統合可能
- 重複送信防止:PRG (Post-Redirect-Get) パターンにより、ページリロード時のフォーム二重送信を防止
- セキュリティ対策:CSRF 攻撃やヘッダーインジェクションなどの一般的な脆弱性に対する保護
使用ガイド
- 入力画面、確認画面、完了画面の HTML をデザインして作成
- 各画面を WordPress ページとして登録
- WordPress の管理パネルの「フォーム」から新しいフォームを作成
- Configure each section. You can configure the following:
- 各画面の HTML (入力、確認、完了)
- 各画面の URL
- 管理者メール設定
- ユーザーメール設定
- 検証設定 (必須フィールド、メール形式、電話番号検証)
- 「HTML を解析」ボタンを使用して、入力画面の HTML からフォームフィールドを自動的に抽出
- 適切なショートコードをページに追加
- 本番環境に移行する前にフォームの動作をテスト
注意: このプラグインはフォーム HTML を書く自由度を最大限に高めるように設計されているため、フォームページの HTML を自分で書く必要があります。プラグインはフォーム表示用の CSS や画像を提供しません。参考用の HTML サンプルが利用可能です。
サポートされている入力フィールド
<input type="text"><input type="tel"><input type="email"><input type="radio"><input type="checkbox"><textarea><select><select multiple>
フォーム画面のプレースホルダー
入力画面:
* [lwsf_value_フィールド名] を使用して以前に入力された値を表示
* [lwsf_error_フィールド名] を使用してバリデーションエラーメッセージを表示
* [lwsf_send] を使用して送信ボタンを表示
確認画面:
* [lwsf_confirm_fieldname] を使用して送信された値を表示
* [lwsf_back] を使用して戻るボタンを表示
* [lwsf_send] を使用して送信ボタンを表示
完了画面:
* [lwsf_field_fieldname] を使用して送信された値を表示
メール設定
メールテンプレートで使用可能なプレースホルダー:
* [lwsf_field_fieldname] – 送信されたフォームデータを表示
* [lwsf_site_admin_email] – サイト管理者のメールを表示
* [lwsf_site_name] – サイト名を表示
* [lwsf_site_home_url] – サイト URL を表示
追加情報
-
複数選択可能なアイテム (
<input type="checkbox">、<select multiple>) の場合、name 属性に [] を追加する必要があります。 例:- チェックボックスの場合:
<input type="checkbox" name="services[]" value="ServiceA"> サービス A <input type="checkbox" name="services[]" value="ServiceB"> サービス B - 複数選択セレクトの場合:
<select id="products" name="products[]" multiple size="4"> <option value="ProductA">製品 A</option> <option value="ProductB">製品 B</option> </select>
- チェックボックスの場合:
-
スクリーンリーダーなど JavaScript が無効な環境でも動作
- 出力されるソースコードはセキュリティ対策と安定した操作のためにエンティティ参照を使用
- 日本語ファイルを含む (UTF-8のみ)
- 衝突を防ぐためにフォームフィールドに WordPress の予約クエリ変数名を使用することを避ける
- PHP互換性: PHP 7.4以上が必要です。PHP 7.4およびPHP 8.3でテスト済み。
データストレージとセキュリティ
- フォーム送信は一時的に WordPress データベース (prefix_lwsf_form_data テーブル) に保存
- データは1時間後に自動的にクリーンアップ
- すべてのユーザー入力は処理前にサニタイズ
- すべてのフォーム送信に CSRF 保護が実装
- メールヘッダーはヘッダーインジェクションを防ぐために検証
このプラグインが作成された理由
このプラグインは、長年クライアントワークに使用されていた MW WP Form が開発を終了したため作成されました。確認画面を備え、クリーンに動作するフォームプラグインが必要でした。このプラグインは主に Web 開発作業のために作成され、自分と同じような Web 開発会社が同様のニーズを持っているかもしれないと考えました。
将来の実装計画
- 検証エラーメッセージを変更する機能
- フォーム送信の前後に動作する PHP ベースの検証フック
- 追加の検証タイプ (URL、数値、カスタム正規表現パターン)
- メール送信の直前・直後など重要なタイミングで発火するフック
- ファイルアップロード処理
プライバシーポリシー
このプラグインは、確認画面と完了画面を表示するためにフォーム送信データを WordPress データベース (prefix_lwsf_form_data テーブル) に保存します。データは1時間後に自動的に削除されます。
有効にすると、フォーム送信者への確認メール送信にユーザーのメールアドレスが使用される場合があります。
reCAPTCHA v3が有効な場合、フォーム送信データ (reCAPTCHA トークンとユーザーの IP アドレス) がスパム検出のために Google の reCAPTCHA 検証 API (https://www.google.com/recaptcha/api/siteverify) に送信されます。Google によるデータの取り扱いの詳細については、Google のプライバシーポリシー および 利用規約 をご参照ください。その他のデータは外部サービスと共有されません。
