WP-ADMIN WIREFRAME — B-CNT-006 お問合せ管理
🏠 LMS学習サイト | サイトを表示
🔔 3
👤
事務局担当者

お問合せ管理

✅ お問合せ ID #INQ-0023 のステータスを「対応済」に変更しました。
 
84件中 1–20件 « / 5 »
受信日時 氏名 所属(法人/事業所) カテゴリ 件名 ステータス
2026-10-18 09:12 山田 花子 社会福祉法人ひまわり会
ひまわりデイサービス
受講・講座について 認知症ケア講座の修了条件を教えてください 未対応
2026-10-17 14:35 鈴木 一郎 医療法人やまびこ
やまびこ訪問介護
アカウント・ログイン 個人アカウントのパスワードをリセットしたい 未対応
2026-10-15 10:04 田中 美咲 社会福祉法人さくら福祉会
さくらグループホーム
修了証・受講証明書 受講証明書が発行されませんでした 未対応
2026-10-14 16:21 高橋 健太 医療法人あおぞら病院
あおぞら訪問看護
契約・料金 法人プランのアカウント数を増やしたい 未対応
2026-10-10 11:50 伊藤 直子 社会福祉法人おおぞら会
おおぞらデイサービス中央
受講・講座について LIVEゼミの参加方法と事前準備について 対応済
2026-10-08 09:33 渡辺 拓也 社会福祉法人みどり福祉会
みどりショートステイ
アカウント・ログイン 事業所共有アカウントで複数端末から同時ログインできますか 対応済
2026-10-07 15:08 佐々木 順子 医療法人誠和会
誠和在宅介護センター
その他 研修計画テンプレートの追加を要望したい 未対応
2026-10-05 13:47 中村 晴美 社会福祉法人かがやき会
かがやきグループホーム南
修了証・受講証明書 修了証PDFのダウンロード方法がわかりません 対応済
受信日時 氏名 所属(法人/事業所) カテゴリ 件名 ステータス
84件中 1–20件 « / 5 »

📋 実装注記(開発者向け)

1. WP実装方針

カスタムDBテーブル lms_inquiries を新規作成し、WP_List_Table を継承した LMS_Inquiry_List_Table クラスで一覧画面を構築する。管理メニューは既存「コンテンツ管理」親メニューのサブメニューとして add_submenu_page() で登録(メニュースラッグ: lms-inquiries)。カスタムカラム(受信日時・氏名・所属・カテゴリ・件名・ステータス)は get_columns() で定義。ステータス変更フォームは admin-post.php 経由で処理し、リダイレクト後に admin notice を表示するパターンを採用。会員サイト F-CMN-002 から送信された問合せを REST API 経由で受信・保存する連携処理が前提。

2. 権限制御

capability は共通設計の正準capability manage_lms_content を使用する(専用 capability は新設しない)。一覧閲覧・ステータス変更・内容確認はすべてこの capability を要求。一般の editor / author ロールからはアクセス不可。メニュー登録条件: current_user_can('manage_lms_content')。問合せ内容には個人情報(氏名・所属・問合せ本文)が含まれるため、権限チェックをすべての表示・操作エンドポイントに適用すること。

3. データ構造

カスタムテーブル lms_inquiries の主要カラム: id(BIGINT, PK)、received_at(DATETIME, 受信日時)、sender_user_id(BIGINT, 送信者WPユーザーID・NULL許容)、sender_name(VARCHAR 100, 氏名)、sender_corp_name(VARCHAR 200, 法人名)、sender_site_name(VARCHAR 200, 事業所名・NULL許容)、category(VARCHAR 50, カテゴリ)、subject(VARCHAR 255, 件名)、body(TEXT, 問合せ本文)、status(ENUM 'open'/'resolved', ステータス)、memo(TEXT, 対応メモ・NULL許容)、created_at / updated_at(DATETIME)。インデックス: status, received_at, sender_user_id に個別インデックスを設定。

4. 一括操作・行アクション

一括操作(Bulk Actions): 「対応済みにする」のみ(PATCH /admin/inquiries/bulk-status・1リクエスト最大100件)。get_bulk_actions() でオプション定義、process_bulk_action()$wpdb->update() によるステータス一括更新を実行。行アクション(Row Actions): 「表示」→問合せ詳細画面(B-CNT-006詳細)へ遷移して内容と対応メモを確認、「ゴミ箱」→論理削除(status='trash' フラグ)。詳細画面では対応メモの追記・ステータス変更(openresolved)を提供する。

5. Screen Options

表示列の選択: 受信日時 / 氏名 / 所属 / カテゴリ / 件名 / ステータス。デフォルトはすべて表示。ページあたり表示件数: デフォルト20件(set-screen-option フィルタで lms_inquiries_per_page キーとして保存)。一覧は受信日時の降順をデフォルトソートとし、件名カラムのみ昇順ソートに対応。カテゴリ絞り込みは WHERE category = %s、ステータス絞り込みは WHERE status = %s で実装。「未対応」件数はサイドバーのメニューラベルにバッジ(件数)として表示することを推奨(add_menu_page() の title 引数で件数を付与)。

6. パフォーマンス・セキュリティ

個人情報を含むテーブルのため、すべての参照・更新処理で $wpdb->prepare() を使用しSQLインジェクションを防止すること。一覧取得クエリは LIMIT / OFFSET によるページネーションを必ず適用(全件取得禁止)。ステータス変更・一括操作・削除はすべて check_admin_referer() でNonce検証必須(Nonce名: lms_inquiry_action)。問合せ本文の表示には esc_html() / wp_kses_post() でサニタイズ処理を適用し、XSS を防止。問合せデータのエクスポート機能を将来追加する場合は、ダウンロードトークン方式(署名付き一時URL)での認可を検討。データ保持ポリシーとして「対応済から1年後に自動アーカイブ」を運用ルールとして定義することを推奨。受信件数が将来的に増加する場合は received_at + status の複合インデックスを追加すること。