Appearance
ADM-030 作品名マスタ管理画面
概要
db_title_masterの一覧・新規登録・名称変更・統合(merge)・無効化を行う専用管理画面。- WordPress 設定サブメニューとして登録。操作はすべて 同一 URL への POST(リダイレクト+クエリ通知)。admin-ajax は使用しない。
- rename / merge / 無効化は確認ダイアログ必須。merge 実行前に影響件数プレビュー(ドライラン)を表示できる。
- 版権・作品タイトルの正本マスタ。誕生日系(
db_birthday/db_birthday_kishu)がtitle_idで参照する。他機能からの参照も可能な設計とする。
外部インターフェース
管理画面 URL
| 項目 | 値 |
|---|---|
| URL | /wp-admin/options-general.php?page=title-master-admin |
| メニュー名 | 作品名マスタ |
| 権限 | manage_options |
フォーム POST(同期 CRUD / merge)
POST options-general.php?page=title-master-admin。
title_master_action 値 | 処理 |
|---|---|
add | 新規登録(upsert_by_names、重複は uk_name で拒否) |
rename | 名称変更(update_name、確認ダイアログ必須) |
deactivate | 無効化(is_active = 0、確認ダイアログ必須) |
merge_preview | 統合の影響件数プレビュー(ドライラン) |
merge | 統合実行(誕生日系 2 テーブルの title_id 差し替え+旧行 DELETE、確認必須) |
Nonce フィールド: title_master_nonce(検証アクション: title_master_admin)
主な POST パラメータ
| フィールド | 操作 | 説明 |
|---|---|---|
title_master_id | rename / deactivate | 対象 ID |
title_master_name | add / rename | 作品名(必須、最大 255 文字) |
title_master_source_id | merge_preview / merge | 統合元 ID |
title_master_target_id | merge_preview / merge | 統合先 ID |
リダイレクト後クエリ(通知)
| クエリ | 内容 |
|---|---|
tm_success | 1 / 0 |
tm_msg | 表示文言(URL エンコード) |
編集・プレビュー用 GET
| GET パラメータ | 説明 |
|---|---|
tm_edit | 名称変更対象 ID |
tm_search | 作品名部分一致検索 |
tm_merge_preview | 1 のときプレビュー結果表示 |
tm_source_id | プレビュー対象の統合元 ID |
tm_target_id | プレビュー対象の統合先 ID |
一覧 URL のエンコード
ソートリンク・編集リンクとリダイレクト先はいずれも build_list_page_url() が組み立てる。add_query_arg() は値をエンコードしないため、AdminQueryUrl が渡された生値を 1 回だけ URL エンコードする(通知の tm_msg も同じ扱い)。
データ
テーブル: db_title_master
| カラム | 説明 |
|---|---|
id | 主キー |
name | 作品名(uk_name) |
is_active | 有効フラグ |
created_at / updated_at | タイムスタンプ |
一覧の参照件数サマリ
| 列名 | 参照先 |
|---|---|
| birthday | db_birthday.title_id 参照件数 |
| birthday_kishu | db_birthday_kishu.title_id |
merge 時の業務テーブル更新
TitleIdBackfillRepository により次の 2 テーブルを更新する。
db_birthdaydb_birthday_kishu
UNIQUE 衝突時は統合先(target)側を残し、統合元(source)側の行を DELETE する。
db_birthday: 同一(month, day, chara, divi)で target 行がある場合、source 行を削除db_birthday_kishu: 同一kishu_idで target 行がある場合、source 行を削除
更新後、TitleMasterRepository::delete_by_id で統合元マスタ行を物理削除する。
プレビューでは birthday / birthday_kishu の衝突件数を表示する。
エラー
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
| nonce 不正 | リダイレクト+エラー | Messages::AUTH_FAILED |
| 必須項目空・長さ超過 | リダイレクト+エラー | TitleMasterAdminMessages::* |
| 名称重複 | リダイレクト+エラー | ADD_DUPLICATE |
| merge 同一 ID | リダイレクト+エラー | MERGE_SAME_ID |
| merge DB 失敗 | リダイレクト+エラー | MERGE_FAILED(ErrorHandler にログ) |