WP Manifestindependent plugin directory
manifest / forms / demo-wp-feature-sample

Demo WP Feature Sample

WordPress機能追加サンプル(投稿フォーム・一覧表示・CSV出力、架空データ)

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/deskloom/demo-wp-feature-sample/archive/refs/heads/master.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress機能追加サンプル(投稿フォーム・一覧表示・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への導入

  1. demo-wp-feature-sample フォルダごと wp-content/plugins/ に配置し、管理画面からプラグインを有効化します。
  2. 任意の固定ページに [wpfs_form] ショートコードを設置します。
  3. フォーム送信内容は管理画面の「申込フォーム受付」メニュー(一覧・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プラグイン)。外部ライブラリ依存なし。