Appearance
SC-006 誕生日一覧ショートコード
概要
- スロット機種キャラクター・声優の誕生日一覧を月別に折り畳み表示するショートコード。
- 全データを DB から取得し、キャラ誕生日と声優誕生日に分類してキャラ名昇順(機種名昇順)でソート後、Twig テンプレートで HTML を生成する。
- 属性(
month/year/display_type)は受け付けてバリデーションするが、フィルター機能は現在未実装(BirthDayIndexController::execute()のコメント参照)。将来のフィルター機能実装時に有効になる。 - 管理画面(
is_admin() === true)では出力しない(空文字を返す)。
外部インターフェース
ショートコードタグ
- タグ名:
[BirthDayIndex] - 入力例(現状フィルターは無効):
[BirthDayIndex] - 将来の入力例(フィルター実装後):
[BirthDayIndex month="4" display_type="character"]
属性一覧
| 属性 | 役割 | 必須 | 許容値 |
|---|---|---|---|
month | 月フィルター(将来実装) | — | 整数 1〜12 |
year | 年フィルター(将来実装) | — | 整数 1900〜currentYear+10 |
display_type | 表示種別フィルター(将来実装) | — | all / character / voice_actor |
属性を省略した場合、または空文字を渡した場合は null として扱い、フィルターなし(全件表示)となる(現在は常に全件表示)。
エラー
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
month が非数値または範囲外(1〜12 以外) | バリデーションメッセージをインライン表示 | Messages::VALIDATION_MONTH_INVALID_TYPE / Messages::VALIDATION_DATE_INVALID_MONTH |
year が非数値または範囲外(1900〜currentYear+10) | バリデーションメッセージをインライン表示 | Messages::VALIDATION_YEAR_INVALID_TYPE / Messages::VALIDATION_YEAR_INVALID_RANGE_FORMAT |
display_type が非文字列または許容値以外 | バリデーションメッセージをインライン表示 | Messages::VALIDATION_DISPLAY_TYPE_INVALID_TYPE / Messages::VALIDATION_DISPLAY_TYPE_INVALID_VALUE_FORMAT |
DB 取得やレンダリングの Throwable | エラーが発生しました:execute_if_not_admin を表示 | error_log(先頭 [ShortCodeHelper]、クラス名・メッセージ・ファイル・行番号) |
管理画面(is_admin() === true) | 出力なし(空文字) | — |
バリデーション例外(ValidationException)は esc_html() でサニタイズしてインライン表示する(ShortCodeHelper::execute_if_not_admin() 参照)。
今後の更新で崩してはいけないところ(互換性契約)
公開契約(Breaking change 扱い)
- ショートコード名
BirthDayIndexを変更しない- 理由: 過去投稿の本文に文字列が直書きされているため、変更するとショートコードが機能しなくなる
- 属性名
month/year/display_typeを変更しない- 理由: フィルター機能が実装された際にそのまま使われる公開 API であり、ショートコードを記述したコンテンツの互換性を維持するため