カスタム投稿タイプ lms_inquiry の詳細・編集画面。add_meta_box() でメタボックスを 'normal'(メインカラム)と 'side'(サイドカラム)に配置。問合せ内容(差出人・カテゴリ・件名・本文)は読み取り専用表示。対応メモは追記専用で lms_inquiry_memos カスタムテーブルに蓄積。ステータス変更は公開ボックスから「更新」ボタンで保存。save_post_lms_inquiry フックでステータス変更処理を実装。「← 一覧に戻る」リンクはB-CNT-006一覧画面へ遷移。
詳細閲覧・ステータス変更: 共通設計の正準capability manage_lms_content を持つ事務局スタッフに限定(専用 capability は新設しない)。current_user_can('manage_lms_content') で各操作を制御。差出人情報の法人詳細リンク(B-MBR-002)は manage_lms_members 権限がある場合のみ表示。対応メモの追加権限も manage_lms_content。メモの編集・削除は誰も不可(追記のみ)。
問合せ本体: カスタム投稿タイプ lms_inquiry(wp_posts)。問合せ本文は post_content、件名は post_title に格納。メタデータは wp_postmeta に保存: _lms_inq_sender_name、_lms_inq_sender_email、_lms_inq_corp_id(法人ID)、_lms_inq_site_id(事業所ID)、_lms_inq_category、_lms_inq_status(open / resolved)、_lms_inq_received_ip。対応メモ専用テーブル lms_inquiry_memos(inquiry_id, memo_text, author_id, created_at)。
本画面は個別詳細表示のため行アクション不要。「更新」ボタンでステータス(open/resolved)を保存。ステータス変更・自動遷移は行わず、送信者への返信は本機能から送信せず「削除」は論理削除。一覧画面(B-CNT-006一覧)では一括ステータス変更(対応済み化)のみを実装。
各メタボックス(問合せ内容・対応メモ・差出人情報・同法人の問合せ)はWP標準の Screen Options パネルで表示/非表示を切り替え可能。add_meta_box() で登録すると自動対応。折りたたみ状態はユーザーメタ closedpostboxes_lms_inquiry に保存。メタボックスの並び替えはWP標準のドラッグ&ドロップを利用(postbox.js)。本画面ではページあたり表示件数の設定は不要(詳細1件表示のため)。
ステータス更新・メモ追加フォームには wp_nonce_field('lms_inquiry_update', 'lms_inquiry_nonce') でNonce検証を実装。メモ本文は wp_kses() でHTMLタグを制限(テキストのみ許可)。差出人メールアドレスは sanitize_email()、各テキストフィールドは sanitize_text_field() でサニタイズ。問合せ本文(post_content)は wp_kses_post() で保存済み。問合せIDの直接参照を防ぐため、投稿IDとは別に INQ-YYYY-NNNN 形式のシーケンス番号を付与。同法人問合せ履歴の取得は WP_Query にコープIDで絞り込み(N+1問題を回避するためメタクエリにインデックス設定: lms_inquiry_corp_id_idx)。メモ履歴テーブルは $wpdb->prepare() でSQLインジェクション対策を実施。問合せ本文には個人情報が含まれるため、閲覧ログを lms_inquiry_access_log テーブルに記録(viewer_id, inquiry_id, accessed_at)。