Demo WP Feature Sample
WordPress機能追加サンプル(投稿フォーム・一覧表示・CSV出力、架空データ)
★ 0stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/deskloom/demo-wp-feature-sample/archive/refs/heads/master.zipWordPress機能追加サンプル(投稿フォーム・一覧表示・CSV出力)
▸ 画面プレビュー(プラグインの出力マークアップを静的HTMLで再現) / ポートフォリオ内の掲載ページ
WordPressに申込・問い合わせフォームを追加するプラグインの制作サンプルです。ショートコード1つでフロント側に入力フォームを設置し、送信内容はカスタム投稿タイプとして保存、管理画面の一覧表示とCSVエクスポートまでを一式で提供します。
ページ編集で
[wpfs_form]を置くだけでフォームが追加され、届いた申込みは管理画面の専用一覧で確認・CSVで持ち出せる状態にします。
課題(Before)
- 問い合わせや申込みをメール・外部フォームサービス任せにしていると、WordPress側の管理画面から一覧・検索・CSV出力ができない。
- 既存のお問い合わせプラグインは多機能すぎる/逆に一覧・CSV出力までは対応していないなど、案件要件とちょうど合わないことが多い。
- WordPress固有の作法(nonce・サニタイズ・権限チェック)を踏まえた安全な実装が必要。
解決(After)
[wpfs_form] ショートコード
└─ フロントにフォーム表示(nonce付き)
└─ 送信 → admin-post.php → バリデーション(WP非依存の純粋関数)
├─ NG → 元のページへエラー付きリダイレクト
└─ OK → カスタム投稿タイプ wpfs_request として保存(名前・メール・内容をpost meta化)
管理画面「申込フォーム受付」メニュー
└─ 一覧表示(日時・お名前・メール・内容)
└─ CSVエクスポート(nonce+権限チェック付き・BOM付きUTF-8)
バリデーション(includes/core-functions.php)とCSV生成はWordPress関数に依存しない純粋関数として切り出しており、WP環境なしでも単体テストできます(後述)。
実行結果(実際にWordPressへ導入して確認)
MySQLなしで動かせる公式の SQLite Database Integration プラグインを使い、WordPress 7.0.2(ローカル・PHP内蔵サーバー)に本プラグインを実際に導入して確認しました。
- フォームを設置したページで
[wpfs_form]が正しくレンダリングされ、nonce付きのフォームが表示された。 - 入力を送信 → カスタム投稿タイプ
wpfs_requestが作成され、名前・メール・内容が post meta に正しく保存された(管理画面から実データを確認)。 - 必須項目未入力・メール形式不正で送信 → 保存されず、元のフォームにエラーメッセージが表示された。
- 管理画面「申込フォーム受付」一覧に送信内容が表示された。
- 一覧の「CSVエクスポート」から、送信データを含むCSV(BOM付きUTF-8)がダウンロードできた。
- 不正なnonceでの送信、未ログインでの一覧・CSVエクスポートへのアクセスは、それぞれ拒否されることを確認した。
実際に動かす
WP非依存ロジックの単体テスト(WordPress環境なしで実行可能)
php tests/test_core_functions.php
バリデーション・CSV生成の純粋ロジックを検証します(mbstring 拡張が必要)。
WordPressへの導入
demo-wp-feature-sampleフォルダごとwp-content/plugins/に配置し、管理画面からプラグインを有効化します。- 任意の固定ページに
[wpfs_form]ショートコードを設置します。 - フォーム送信内容は管理画面の「申込フォーム受付」メニュー(一覧・CSVエクスポート)から確認できます。
構成
| ファイル | 役割 |
|---|---|
demo-wp-feature-sample.php |
プラグイン本体(フックの登録) |
includes/core-functions.php |
WordPress非依存の純粋ロジック(バリデーション・CSV生成。単体テスト対象) |
includes/class-cpt.php |
申込データを保存するカスタム投稿タイプの登録 |
includes/class-form.php |
[wpfs_form] ショートコードの表示と送信処理(nonce検証・保存) |
includes/class-admin-list.php |
管理画面の一覧表示ページ |
includes/class-csv-export.php |
管理画面からのCSVエクスポート処理 |
tests/test_core_functions.php |
core-functions.php の単体テスト(WP環境不要) |
備考
- 掲載データはすべて架空です。実在の企業・個人情報は含みません。
- 管理画面の一覧表示は件数が多くなる想定の実案件では
WP_List_Tableへの置き換えを推奨します(本サンプルはシンプルなテーブル表示)。 - 動作確認はローカルのWordPress 7.0.2(SQLite Database Integration・PHP内蔵サーバー)で実施しました。本番のMySQL環境固有の差異(文字コード設定等)はスコープ外です。
- 技術スタック: PHP(WordPressプラグイン)。外部ライブラリ依存なし。