初心者送信データを保存したい..
管理画面で確認できるようにしたい…
そんな疑問に答えます。Snow Monkey Formsプラグインって、高機能なんですが問い合わせ履歴を保存する機能はありません。調べてみたら、フォーラムで以下のコメントがありました。
Snow Monkey Forms には送信データを保存する機能はありません!
MW WP Form にはありますが、やっぱり個人情報を扱うのはこわいな…ということで、Snow Monkey Forms にはつけませんでした。※一応、送信ポイントにフックは仕込んであるのでコードを書けばできはしますが、おすすめはしません…。
Snow Monkey Formsはデータの蓄積ができますか?Snow Monkey 公式フォーラム
保存する機能はないけど、フックがあるので実現できるという内容です。そんなわけで保存する機能を付け加える拡張プラグインを作ってみました。
Snow Monkey Formsとは?

Snow Monkey Formsは送信フォームをサイトに設置できるWordPressプラグインです。ブロックエディター上でサクサクフォームを編集できるので、コードの知識がない初心者でもラクラク作業ができる優れものです。
WordPress問い合わせフォーム系のプラグインだとContact Form7のように送信直前の確認画面のないものがありますが、Snow Monkey Formsには確認画面機能があります。この点を理由にSnow Monkey Formsを選ぶユーザーも多いのではないでしょうか?
Snow Monkey Formsの概要
| プラグイン名 | Snow Monkey Forms |
| 開発元 | Takashi Kitajimaさん (Snow Monkey作成者) |
| ダウンロード | WordPress公式ディレクトリー |
Snow Monkey Formsプラグインは、WordPressの人気テーマ「Snow Monkey」の制作者であるキタジマさんが手がけたプラグインです。
DBにフォームの送信データを保存する機能はない
Snow Monkey Formsは非常に便利なんですが、送信データをDBに保存し管理画面上から確認する機能はありません。
類似の送信フォーム系のプラグインだと、DBに保存する機能を拡張するプラグインを見かけます。例えばContact Form7では拡張用のプラグインが存在ます。Snow Monkey FormsでもDBに保存する拡張するプラグインがあればと思い探してみましたが、該当する機能をもつプラグインは見つかりませんでした…
【作ってみた】送信データをDBに保存する拡張プラグイン

本記事の主題です。DBに送信データを保存する拡張プラグインを作成しました。
管理画面の仕様

プラグインを有効化すると、管理画面上に「問い合わせ履歴」という管理メニューを表示させています。複数のユーザーでサイトを運用するケースを考慮し、管理者権限のみ表示されるよう制限を付けました。
問い合わせを一覧表示
問い合わせ履歴ページでは以下のデータを確認できる仕様です。
| ID | 問い合わせに紐づけた管理ID。 |
| 送信内容 | フォームに入力された内容 |
| 送信日時 | フォームから送信された日時 |
| 送信元IP | フォームを送信したユーザーのIP |
かんた必要に応じてメモなど、管理目的のカラムを追加しても良いかも?
CSVファイルへのエクスポート

管理ページ上に、保存された問い合わせデータをCSVファイルでエクスポートできる機能です。
ビジネス上、問い合わせデータをDBに保存する目的はデータの解析や顧客リストを作成するといったものです。保存されているデータをPCにダウンロードできる機能は必須ですね。
データの編集・削除機能

保存されたデータを管理画面から編集、削除できる機能です。送信されたデータを一部修正するといったケースや、不要なデータを管理画面上から削除する機能を付けました。
かんたID、送信日時、送信元IPなど管理上重要なデータは編集できない仕様です。
拡張プラグインの構成
作成した拡張プラグインのファイル構成と各ファイルの役割について紹介します。
プラグインのファイル構成
snow-monkey-forms-db/
├─ snow-monkey-forms-db.php
└─ includes/
├─ class-install.php
├─ class-hook.php
├─ class-admin-menu.php
├─ class-list-table.php
└─ class-edit-page.php
かんた各ファイルの役割をそれぞれ解説します。
snow-monkey-forms-db.php(プラグインのメインファイル)
役割
- プラグイン情報(名前・説明・作者など)を定義
- プラグイン有効化時の処理を登録
- Snow Monkey Forms が有効かどうかを判定
- 各クラスファイルを読み込み、処理を開始
プラグイン全体の「入口」。処理は基本的に他のクラスに委譲、ここはなるべくシンプルに保つ設計。
includes/class-install.php(データベース作成担当)
- プラグイン有効化時に実行される
- 問い合わせ履歴を保存する専用テーブルを作成
主な処理内容はDBにテーブルを作成すること。
includes/class-hook.php(Snow Monkey Forms との連携担当)
役割
- Snow Monkey Forms の送信完了フックを利用
- フォーム送信時にデータを取得
- データベースへ保存
主な役割:
- Snow Monkey Forms の内部データを受け取る
- フォームの入力内容を配列化
- IPアドレスなどの付加情報を取得
- DBへ1件分のレコードとして保存
このファイルが 「このプラグインの心臓部」 です。
includes/class-admin-menu.php(管理画面メニュー・画面制御担当)
役割
- 管理画面左メニューに「問い合わせ履歴」を追加
- 一覧画面・編集画面のルーティング
- 削除・更新・CSVエクスポート処理の受付
主な機能は管理画面上に、拡張プラグインの管理メニューである問い合わせ履歴一覧を表示すること。
- 管理メニュー登録
- 一覧画面表示
- 編集画面表示
- 削除処理
- CSVエクスポート処理
includes/class-list-table.php(問い合わせ一覧表示担当)
役割
WP_List_Tableを継承- 投稿一覧と同じUIで問い合わせ履歴を表示
実装されている機能:
- ID / 送信内容 / 送信日時 / 送信元IP の表示
- カラムソート(ID・日時・IP)
- 編集・削除アクションリンク
includes/class-edit-page.php(個別問い合わせの編集画面担当)
役割
- 一覧画面から「編集」をクリックした際の画面
- 送信内容をフォーム形式で表示
- 内容を修正して保存可能
役割の要点:
- 1件の問い合わせを確認・修正する画面
- 管理者向けの補正・メモ用途に便利
まとめ
Snow Monkey Formsプラグインから送信されたデータをDBに保存する拡張プラグインについての紹介でした。拡張プラグインを作成するさいに、Snow Monkey Formsプラグインのソースを確認してみましたが、フックが豊富でかなり拡張性があるな~と感じました。コードが読める方であれば同じような拡張プラグインは2時間もあれば作成できるかと思います。
かんたぜひカスタマイズに挑戦してみてください。
バージョン情報
- WordPress:6.9
- Snow Monkey Forms:12.0.2

