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

Demo WP Feature Sample

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

by deskloom · github.com/deskloom/demo-wp-feature-sample

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.zip

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プラグイン)。外部ライブラリ依存なし。