Appearance
SC-003 ランダム広告ショートコード
概要
- ショートコード
[random_adsense_ad]で広告 HTML を出力する。providerとcountでプロバイダ・件数を指定できる。 provider=adsense(既定)および A8 抽選 0 件時のフォールバックでは、AppConstants::ADSENSE_SLOTS_CREATE_DAILY_ARTICLEのスロットを同一リクエスト内で順次ローテーションして割り当てる(AdSense::display_sequential_google_adsense_ad_for_daily_article())。provider=a8では未使用 ID を優先して抽選する。0 件のときは上記 AdSense にフォールバックする。adsbygoogle.jsはページあたり 1 回だけ enqueue する(重複防止あり)。
ワイヤーフレーム
PUB-003 日別記事結果 — 広告 と同一見た目:
ブロック一覧
| ブロックID | ブロック名 | 表示内容 | 初期値 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-1 | 広告枠 | .adsense-wrap(AdSense)または A8 広告 HTML | 常時表示 | なし | - |
図中の B-8 は PUB-003 / SC-001 共有ワイヤーフレームのブロック ID。SC-003 単体では表示単位を B-1 として扱う。
表示条件・注記
- 属性:
provider(adsense既定 /a8)とcount(1〜10。範囲外はクランプ)。許容外のproviderはadsenseにフォールバック。 - AdSense 経路(
provider=adsense、または a8 抽選 0 件時): 同一 PHP リクエスト内でスロットを順次ローテーション。静的$slot_indexはリクエスト内で共有されるため、同一ページ上の SC-003 呼び出しと日別記事結果の埋め込みB-8(PUB-003)もカウンタを共有する(呼び出し経路自体はショートコード単体 vs 日別記事結果ビューで別)。詳細は adsense-optimization.md。 - A8 経路(
provider=a8): 未使用 ID 優先の抽選。HTML は A8 用レンダラ。0 件なら AdSense にフォールバック。 - マークアップ契約(AdSense):
.adsense-wrap/.adsbygoogle/.adsense、data-ad-format="auto"、data-full-width-responsive="true"(互換性契約参照)。 - スクリプト:
adsbygoogle.jsの handle はgoogle-adsense。ページあたり 1 回のみ enqueue。 - 見た目の共有: ワイヤーフレームは PUB-003 広告パーツと同一コンポーネント。見た目は同じだが、呼び出し経路・プロバイダ分岐は SC-003 側の仕様に従う。
外部インターフェース
ショートコードタグ
- タグ名:
[random_adsense_ad] - 入力例(既定):
[random_adsense_ad] - 入力例(A8):
[random_adsense_ad provider="a8"] - 入力例(件数指定):
[random_adsense_ad count="2"]
属性一覧
| 属性 | 役割 | 必須 | 許容値 |
|---|---|---|---|
provider | 広告プロバイダ | — | adsense / a8 |
count | 表示する広告数(上限 10、下限 1 にクランプ) | — | 整数 1〜10 |
属性を省略した場合、provider=adsense・count=1 として扱う。
エラー
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
処理中の Throwable(Twig レンダリング失敗など) | 固定文言(エラーが発生しました:execute_if_not_admin) | error_log(ShortCodeHelper、先頭 [ShortCodeHelper]) |
今後の更新で崩してはいけないところ(互換性契約)
公開契約(Breaking change 扱い)
- ショートコード名
random_adsense_adを変更しない- 理由: 過去投稿本文に文字列が直書きされているため
- 属性名
provider/countを変更しない- 理由: 日別記事テンプレート等で
provider="a8"が直書きされているため
- 理由: 日別記事テンプレート等で
- AdSense Publisher ID
ca-pub-8709674592133889(Google アカウント設定と一致させる) - CSS クラス
.adsense-wrap,.adsbygoogle,.adsense(外部 CSS・AdSense JS が依存) data-ad-format="auto",data-full-width-responsive="true"(レスポンシブ表示の前提)adsbygoogle.jsの handle 名google-adsense(wp_script_is等との整合)