Appearance
SC-004 日別記事関連日ショートコード
概要
- 指定ホール・日付の「関連日結果」(過去の類似イベント日データ)と「日別結果カレンダー」を日別記事ページに埋め込み表示する。
- 関連日が存在しない場合はカレンダーのみを表示する。
hall・date属性は必須で、省略または不正値のときはValidationExceptionとなり、ユーザー向けにはバリデーションメッセージを表示する(詳細は「エラー・境界条件」)。
ワイヤーフレーム
同一 UI の記事埋め込み枠は PUB-001 の RelationalDayBlock(P-12)と共有する。
ブロック一覧
| ブロックID | ブロック名 | 表示内容 | 初期値 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-0 | コンテナ | 「関連日・日別カレンダー」見出し+配下ブロック | 常時表示 | なし | - |
B-1 | 関連日リンク | 関連日チップ(日付一覧)。本番はアコーディオン+差枚・画像テーブル | 関連日が 1 件以上のときのみ | チップ/詳細リンク・さらに表示(本番) | - |
B-2 | 日別結果カレンダー | 日別カレンダー枠(非同期読み込み) | 常時表示(関連日 0 件時も表示) | なし(カレンダー操作は本番 JS) | - |
表示条件・注記
- 属性:
hall/date必須。不正時はバリデーションメッセージ。 - 関連日 0 件:
B-1を出さずB-2のみ表示。 - 管理画面:
is_admin()ではショートコード全体を出力しない。 - ワイヤーフレーム: 関連日ありの通常ケースのみサンプル表示(0 件時は注記どおり B-1 非表示)。
- B-1 の粒度: 共有ブロックは関連日チップの要約表示。本番のアコーディオン+差枚・画像テーブル詳細行は本ワイヤーでは省略し、設計書本文・Twig(
relational_day_result.twig)を正とする。
外部インターフェース
ショートコードタグ
- タグ名:
[CustomCode_CreateDailyArticleRelationalDay] - 入力例:
[CustomCode_CreateDailyArticleRelationalDay hall="アイランド秋葉原" date="20240101"]
属性一覧
| 属性 | 役割 | 必須 |
|---|---|---|
hall | 対象のホールを指定(HallEnum へ変換) | ○ |
date | 対象日を指定(\DateTime へ変換) | ○ |
エラー・境界条件
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
hall 不正 / 未指定 | ValidationException を ShortCodeHelper が捕捉し、バリデーションメッセージを表示 | error_log:本番は識別1行のみ([ShortCodeHelper] ValidationException)。WP_DEBUG 時は識別行に加え、例外メッセージを制御文字除去・単一行化し、返却文字列全体が 200 文字以内(末尾 … を含む)で付加 |
date 不正 / 未指定 | 同上 | 同上 |
| 関連日データが 0 件 | 関連日セクションを出さずカレンダーのみ表示(想定内の分岐) | ログなし |
管理画面(is_admin())での実行 | AbstractShortCode::render() が先に空文字を返し、ショートコード本体は未実行 | ログなし |
処理中のその他 Throwable | 固定文言(エラーが発生しました:execute_if_not_admin) | error_log([ShortCodeHelper] {class}: {message} in {file} on line {line}) |
今後の更新で崩してはいけないところ(互換性契約)
公開契約(Breaking change 扱い)
- ショートコード名
CustomCode_CreateDailyArticleRelationalDayを変更しない- 理由: 過去投稿本文にショートコード文字列が直書きされているため
- 属性名
hall/date(省略時にValidationExceptionとなる挙動を含む)