Skip to content

ADM-004 〇〇の日マスタ管理画面 ​

概要 ​

  • db_what_day_master テーブルの一覧表示・新規追加・編集・削除・is_show 一括切替を行う管理画面。
  • WordPress 設定サブメニュー(add_options_page)として登録。CRUD 操作はフォーム POST、is_show トグルとシードは admin-ajax 経由で処理する。
  • 「ざつねた」から〇〇の日データをシードする機能を持ち、AJAX ボタン 1 つで外部サービスから一括取得できる。
  • 一覧はキーワード・月・日でフィルタリング可能で、ページネーション(デフォルト 50 件)とソートに対応する。

外部インターフェース ​

管理画面 URL ​

項目値
URL/wp-admin/options-general.php?page=what-day-master-admin
メニュー名〇〇の日マスタ
権限manage_options

フォーム POST(同期 CRUD) ​

すべて POST options-general.php?page=what-day-master-admin へ送信し、処理後にリダイレクトする。

what_day_master_action 値処理
add新規エントリ追加
update既存エントリ更新
delete指定 ID のエントリ削除
update_is_show指定 ID の is_show 更新(フォーム版)

Nonce フィールド: what_day_master_nonce(検証アクション: what_day_master_admin)

主な POST パラメータ ​

フィールド操作型・制約説明
what_day_master_idupdate/delete正整数操作対象エントリ ID
what_day_master_nameadd/update文字列(max 255文字)名称(必須)
what_day_master_is_showadd/update/is_show"1" または未送信投稿での表示フラグ
what_day_master_mmddadd/update整数 101〜1231 または空月日(省略可)
what_day_master_yyyymmddadd/update整数 8桁 または空年月日(省略可)

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

クエリ内容
wdm_success1 成功、0 失敗
wdm_msg表示文言(URL エンコード)

admin-ajax(HTTP 契約) ​

すべて POST /wp-admin/admin-ajax.php、manage_options 権限+nonce 必須。

action 値説明
what_day_master_update_is_show指定 ID の is_show を AJAX で切替
what_day_master_seed_from_zatsuneta「ざつねた」から一括シード

POST パラメータ・レスポンス data の契約は admin-ajax/endpoints/ 配下の ADM-004-1(is_show 切替) および ADM-004-2(ざつねたシード) を参照。

画面 ID ​

使用画面 ID: ADM-004(ADM-一覧.md 参照)

データ ​

テーブル: db_what_day_master ​

カラム型説明
idint PK自動採番
namevarchar(255)〇〇の日名称
is_showtinyint(1)投稿での表示フラグ(1=表示)
mmddint null月日(例: 101 = 1月1日)
yyyymmddint null年月日(例: 20260101 = 2026年1月1日)
created_atdatetime作成日時
updated_atdatetime更新日時

一覧フィルタ・ソート ​

GET パラメータ説明デフォルト
wdm_search名称部分一致空(全件)
wdm_month月フィルタ(1〜12、0=指定なし)0
wdm_day日フィルタ(1〜31、0=指定なし)0
wdm_orderbyソートキー(id/name/created_at/updated_at)id
wdm_orderソート方向(asc/desc)asc
wdm_pagedページ番号(1以上)1
wdm_per_page表示件数(20/50/100/200)50

一覧 URL のエンコード ​

ページネーション・ソート・編集リンクとリダイレクト先はいずれも build_list_page_url() が組み立てる。add_query_arg() は値をエンコードしないため、AdminQueryUrl が渡された生値を 1 回だけ URL エンコードする(通知の wdm_msg も同じ扱い)。生値のままだと & や # を含む名称で検索したときに条件や文言が途中で切れる。

既知の制約: 受け取り側の sanitize_text_field() は % + 16 進 2 桁を削除するため、A%2Bb のような検索語は往復で値が変わる。

エラー ​

条件ユーザー向け挙動メッセージ / ログ
nonce 不正リダイレクト+エラーメッセージ表示Messages::AUTH_FAILED
manage_options 権限なしwp_die() または JSON エラーMessages::PERMISSION_DENIED
名称が空リダイレクト+エラーメッセージ表示Messages::WHAT_DAY_MASTER_NAME_REQUIRED
名称が 255 文字超リダイレクト+エラーメッセージ表示Messages::WHAT_DAY_MASTER_NAME_MAX
mmdd が範囲外または不正日付リダイレクト+エラーメッセージ表示Messages::WHAT_DAY_MASTER_MMDD_INVALID
yyyymmdd が 8 桁外または不正日付リダイレクト+エラーメッセージ表示Messages::WHAT_DAY_MASTER_YYYYMMDD_INVALID
ID が 0 以下(update/delete)リダイレクト+エラーメッセージ表示Messages::REST_INVALID_ID_MESSAGE
追加時に重複エントリリダイレクト+エラーメッセージ表示Messages::WHAT_DAY_MASTER_ADD_DUPLICATE
シード実行時に \ThrowableJSON エラー返却error_log([WhatDayMasterAdminPage] 先頭)
月・日両方指定で不正日付(例: 2/31)日パラメータをクリアしてリダイレクトMessages::WHAT_DAY_MASTER_SEARCH_DATE_INVALID