Skip to content

ADM-3 ビルド管理画面 ​

画面 ID ADM-3(ADM-一覧.md)。

概要 ​

  • テーマ配下(MVC ルートの親ディレクトリ)に展開された core_YYYYMMDD_HHMMSS ビルドディレクトリを一覧表示し、管理者が複数選択して削除できるメンテナンス用ツール画面。
  • WordPress の ツール メニュー配下(add_management_page)に登録。操作は 同一 URL への POST フォーム(リダイレクト+クエリで結果表示)。admin-ajax は使用しない。
  • 現在 connector.php の VERSION 定数が指すタイムスタンプ版に該当するディレクトリは 稼働中として扱い、チェックボックス無効・削除対象外。
  • 削除処理では set_time_limit(300) を試行し、ディレクトリを再帰削除する(シンボリックリンクは unlink)。

外部インターフェース ​

管理画面 URL ​

項目値
URL/wp-admin/tools.php?page=build-manager-admin
page slugbuild-manager-admin(BuildManagerAdminPage::PAGE_SLUG)
メニュー名(ツール配下)ビルド管理
権限manage_options

POST(削除) ​

load-{hook} 上の maybe_process_form() が POST のみ処理。成功・失敗とも wp_safe_redirect で同一画面に戻し、クエリで通知する。

フィールド名内容
build_manager_noncenonce フィールド。アクション名 build_manager_admin(NONCE_ACTION)
build_manager_action削除時は delete_selected(ACTION_DELETE_SELECTED)
build_versions[]削除対象のタイムスタンプ文字列(^[0-9]{8}_[0-9]{6}$)。複数可

リダイレクト後クエリ(通知) ​

クエリ内容
bm_success1 成功系、0 失敗系(QUERY_SUCCESS)
bm_msg表示文言(QUERY_MSG。URL エンコード。esc_html して管理通知として出力)

通知の出力は AdminNoticeTrait(show_admin_notice_from_query() / render_admin_notice())に集約しており、GET の読み取り・サニタイズ・マークアップは他の管理画面と共通。URL は App\Util\AdminQueryUrl::build() で組み立てる。同クラスが値を rawurlencode() するため、呼び出し側は生値を渡す(rawurlencode() 済みの値を渡すと二重エンコードになり、受け取り側の sanitize_text_field() が %xx を削除して文言が消える)。

稼働中ビルドの判定 ​

  • 定数 VERSION が未定義の場合は「稼働中」なし。
  • 定義されている場合、値が正規表現 /_([0-9]{8}_[0-9]{6})$/ にマッチすれば、キャプチャ群(タイムスタンプ部分)が稼働中バージョン。core_{timestamp} ディレクトリと一致する行は is_active となり削除不可。

エラー ​

条件ユーザー向け挙動メッセージ / ログ
画面表示時に manage_options なしwp_dieMessages::PERMISSION_DENIED
POST 時に manage_options なしsilent return(他管理画面の Trait 既定と同じ。通知なし)—
nonce 不正リダイレクトでエラー通知Messages::AUTH_FAILED
削除対象未選択(空配列)リダイレクトでエラー通知BuildManagerMessages::NO_SELECTION
バージョン配列が正規表現に合致しないもののみ等で実質空リダイレクトでエラー通知BuildManagerMessages::INVALID_VERSION
稼働中を含む・存在しないパス等で 1 件も削除できなかったリダイレクトでエラー通知BuildManagerMessages::DELETE_FAILED
一部削除成功・一部失敗(稼働中スキップ・削除失敗など)成功通知(文言に一部失敗を含む)BuildManagerMessages::BULK_DELETE_PARTIAL_SUCCESS_FORMAT
全件削除成功成功通知BuildManagerMessages::BULK_DELETE_SUCCESS_FORMAT

フロントでは送信時にチェックが 0 件なら alert(msgNoSelection) で中断。件数確認ダイアログは msgConfirmFormat の %d を選択件数で置換。

変更履歴(設計書) ​

日付(JST)変更内容コード側の対応
2026-04-21初版作成
2026-04-21見出しの画面 ID を ADM-3 に修正(旧 ADM-2 / ADM-UI-003 表記を廃止)。画面一覧リンクを相対パス化—
2026-04-25ビルド管理向けメッセージ定数を BuildManagerMessages に集約した旨をエラー表に反映
2026-08-09通知の出力を AdminNoticeTrait に集約し、bm_msg を URL エンコードして渡すことを明記#3183
2026-08-16POST 時の権限不足を silent return に更新。nonce 以降は「リダイレクトでエラー通知」と明記#3326