Skip to content

SC-003 ランダム広告ショートコード

概要

  • ショートコード [random_adsense_ad] で広告 HTML を出力する。providercount でプロバイダ・件数を指定できる。
  • 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 として扱う。

表示条件・注記

  • 属性: provideradsense 既定 / a8)と count(1〜10。範囲外はクランプ)。許容外の provideradsense にフォールバック。
  • 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 / .adsensedata-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=adsensecount=1 として扱う。

エラー

条件ユーザー向け挙動メッセージ / ログ
処理中の Throwable(Twig レンダリング失敗など)固定文言(エラーが発生しました:execute_if_not_adminerror_logShortCodeHelper、先頭 [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-adsensewp_script_is 等との整合)