ACS Contact Form

💭 概要・設計思想

ACS Contact Formは、WordPress初心者でも直感的にフォームを作成・管理できる軽量コンタクトフォームプラグインです。カスタム投稿タイプによるフォーム管理、トグルスイッチ方式のフィールド設定、ドラッグ&ドロップ不要のカスタムフィールド追加、ファイル添付機能を備え、1画面完結の編集UIにより有効化から設置までを最短で実現します。jQuery不使用のVanilla JS構成でサイト表示速度に影響を与えません。

✨ 主要機能一覧

ハニーポット方式をデフォルトで全フォームに自動挿入。CSSで非表示にした入力欄にBotが値を入力した場合、送信を無効化する。ユーザー側の設定は不要。

  1. ユーザーがフォーム入力後に送信ボタンをクリック
  2. Vanilla JSでフロントエンドバリデーション実行(必須チェック、メール形式チェック、ファイル形式・サイズチェック)
  3. バリデーション通過後、FormDataオブジェクトでファイルを含むデータをadmin-ajax.phpへAjax送信
  4. サーバー側でハニーポットチェック、全入力値のサニタイズ、添付ファイルのバリデーション(形式・サイズ・MIMEタイプ二重チェック)
  5. wp_handle_uploadで添付ファイルを一時保存
  6. wp_mailで管理者通知メール送信(添付ファイル付き)
  7. 自動返信がオンの場合、送信者へ返信メール送信(添付ファイルなし)
  8. 一時保存した添付ファイルを削除
  9. フォーム部分が送信完了メッセージに切り替わり表示(ページ遷移なし)

  10. reCAPTCHA v3対応

  11. 送信履歴の管理画面内保存・CSV出力
  12. 条件分岐表示(特定の選択肢を選んだ時だけ表示されるフィールド)
  13. 送信完了後のリダイレクトURL設定
  14. フォームデザインのカスタマイズ(配色・ボタンスタイル)
  15. 確認画面の表示オプション(送信前に入力内容を確認)
  16. 複数送信先の振り分け(フィールド値に応じて送信先メールを変更)

🔧 技術仕様(アーキテクチャ・依存関係)

技術仕様

  • PHP 8.0以上、WordPress 6.0以上
  • jQuery不使用、Vanilla JSのみ
  • wp_mail関数によるメール送信
  • カスタム投稿タイプ「acs_form」によるフォーム管理
  • Ajax送信(ページ遷移なし)
  • ショートコードおよびブロックエディタ対応
  • テキストドメイン:acs-contact-form
  • 関数プレフィックス:acs_cf_
  • GPL v2+ライセンス

5-2. 標準フィールド設定

トグルスイッチ方式でフィールドのオン・オフを切り替え。各フィールドに「必須にする」チェックボックスを付与。

デフォルトON(初期状態で有効):

  • お名前(必須)
  • メールアドレス(必須)
  • お問い合わせ内容(必須)

トグルで追加可能:

  • 電話番号
  • 会社名
  • 住所
  • 件名

5-3. カスタムフィールド設定

「フィールドを追加」ボタンで任意のフィールドを追加可能。追加時に以下の項目を設定する。

フィールド設定項目:

  • フィールドラベル(表示名、例:「参加希望日」「ご予算」)
  • フィールドタイプ(テキスト / テキストエリア / セレクトボックス / ラジオボタン / チェックボックス)
  • 選択肢(セレクトボックス・ラジオボタン・チェックボックスの場合、1行1選択肢のテキストエリアで入力)
  • プレースホルダー(テキスト・テキストエリアの場合)
  • 必須にする(チェックボックス)

追加されたカスタムフィールドは編集画面上に縦に並び、各フィールドの右側に「削除」ボタンを配置。並び順はフォーム上の表示順と連動し、上下の「移動」ボタンで入れ替え可能(ドラッグ&ドロップは使用しない)。

5-4. ファイル添付設定

トグルスイッチでファイル添付フィールドの有効・無効を切り替え。

設定項目:

  • ファイル添付フィールドの表示ラベル(デフォルト:「ファイルを添付」)
  • 許可するファイル形式(デフォルト:jpg, jpeg, png, gif, pdf, doc, docx)
  • 最大ファイルサイズ(デフォルト:5MB)
  • 最大添付数(デフォルト:3ファイル)
  • 必須にする(チェックボックス)

添付ファイルはwp_handle_upload関数で一時保存し、メール送信後に自動削除する。サーバーに恒久的にファイルを残さない設計とすることで、ストレージ圧迫とセキュリティリスクを回避する。

5-5. メール設定

  • 送信先メールアドレス(デフォルト:WordPress管理者メールアドレス)
  • メール件名テンプレート(デフォルト:「【{form_name}】{subject}」)
  • 自動返信メール:オン・オフのトグル
  • 自動返信メール件名テンプレート
  • 自動返信メール本文テンプレート(プレースホルダー:{name}、{email}、{message}、{form_name}、{all_fields})

管理者通知メールには全フィールドの入力内容とファイル添付を含む。自動返信メールにはファイルを添付しない(送信者への不要な再送防止)。

フロントエンド表示仕様

フォームはACSテーマのデザインに依存せず、最小限のスタイルで出力する。標準フィールド、カスタムフィールド、ファイル添付フィールドは編集画面の設定順に上から縦に配置。送信ボタンはフォーム最下部に配置。バリデーションエラーは該当フィールドの直下に赤文字で表示。送信中は送信ボタンを無効化し「送信中…」に変更。送信完了後はフォーム全体が完了メッセージに切り替わる。

📁 ファイル構成

/acs-contact-form/
├── acs-contact-form.php(メインファイル)
├── readme.txt
├── assets/
│   ├── css/
│   │   ├── frontend.css(フォーム表示用)
│   │   └── admin.css(管理画面用)
│   └── js/
│       ├── frontend.js(バリデーション・Ajax送信・ファイルプレビュー)
│       └── admin.js(ショートコードコピー・トグルUI・カスタムフィールド追加/削除/並び替え)
├── inc/
│   ├── post-type.php(カスタム投稿タイプ登録)
│   ├── meta-boxes.php(編集画面の標準フィールド設定・カスタムフィールド設定・ファイル添付設定・メール設定)
│   ├── ajax-handler.php(送信処理・ファイルアップロード・メール送信)
│   ├── shortcode.php(ショートコード出力)
│   ├── block.php(ブロックエディタ登録)
│   ├── honeypot.php(スパム対策)
│   ├── file-handler.php(ファイルアップロード・バリデーション・一時保存・削除処理)
│   └── custom-fields.php(カスタムフィールドの保存・読み込み・レンダリング)
├── templates/
│   └── form-template.php(フロントエンドのフォームHTML)
└── languages/
    └── acs-contact-form-ja.po

プラグインの詳細を確認する

実際の機能や導入メリット、購入情報については以下のページをご覧ください。

ACS Contact Form の詳細ページを見る →