コンテンツにスキップ

ホームヒーローのキャンペーン連動仕様

  • 日付: 2026-04-20
  • 対象: Storefront ホームのメインバナー(ホームヒーロー), WordPress CMS メインバナー管理

背景

ホームヒーローのメインバナーは WordPress 側で独立管理しているが、キャンペーン導線と結び付けたい要件がある。

一方で、公開 URL の slug は変更される可能性があるため、連動キーを slug に依存させない。

決定事項

  1. メインバナーは任意で campaignId を持てる。
  2. campaignId は campaign の公開 URL ではなく、連動用の一意な業務 ID として扱う。
  3. campaignId が設定されたバナーは、Storefront 上で解決できる campaign にのみ連動する。
  4. メインバナーの displayPeriod は campaign の期間へ統合しない。独立した機能として維持する。
  5. campaignId が設定されたバナーは、scheduleMode により表示期間の判定方法を切り替えられる。

メインバナーの追加フィールド

WordPress の「メインバナー(リピーター)」の各 slide に、以下を追加する。

  • campaignId
  • 型: 文字列
  • 必須: 任意
  • 用途: 連動先 campaign の一意 ID
  • scheduleMode
  • 型: select
  • 必須: 任意
  • 初期値: banner-only
  • 選択肢:
    • banner-only
    • campaign-only
    • both

表示ルール

campaign 非連動バナー

campaignId 未設定のバナーは、従来どおり独立バナーとして扱う。

  • displayPeriod の範囲内なら表示する
  • displayPeriod 未設定なら常時表示する
  • 商品・collection・campaign には紐づけず、商品表示制御や対象商品の有無では非表示にしない
  • 遷移先は destinationUrl が設定されている場合のみ使用する

campaign 連動バナー

campaignId が設定されたバナーは、次の条件で表示する。

  1. campaignId から Storefront 上の campaign 導線を解決できること
  2. 解決した campaign が、その時点で Storefront 上の公開対象であること
  3. 解決した campaign collection に、現在の顧客から見える商品が1件以上あること
  4. scheduleMode に応じた期間条件を満たすこと

ここでいう「公開対象」は、Vendure の campaigns 親 collection 配下に存在し、表示制御ルールで許可され、かつ有効な campaign code と一致している状態を指す。campaign collection が存在しても、対象商品がすべて非表示・対象外・未登録の場合は、バナーも campaign 一覧も表示しない。

scheduleMode ごとの判定

  • banner-only
  • campaign が公開対象であること
  • campaign collection に現在の顧客から見える商品が1件以上あること
  • かつ、バナー自身の displayPeriod を満たすこと
  • campaign-only
  • campaign が公開対象であること
  • campaign collection に現在の顧客から見える商品が1件以上あること
  • バナー自身の displayPeriod は表示判定に使わない
  • both
  • campaign が公開対象であること
  • campaign collection に現在の顧客から見える商品が1件以上あること
  • かつ、バナー自身の displayPeriod を満たすこと

リンク解決ルール

campaignId が設定されたバナーは、Storefront 側で campaignId から現在の campaign URL を解決し、遷移先を /campaigns/{current-slug} とする。

  • WordPress バナー側で campaign の URL を手入力しない
  • slug が将来変更されても、campaignId が同じなら追従する

異常系

campaignId が設定されていても、次の場合はそのバナーを表示しない。

  • 該当 campaign が見つからない
  • 該当 campaign が Storefront の公開対象ではない
  • 該当 campaign collection に現在の顧客から見える商品が1件もない
  • campaign URL を解決できない

関連導線の表示制御

Storefront の collection 導線は、原則として「表示制御で許可されていること」と「現在の顧客から見える商品が1件以上あること」の両方を満たす場合だけ表示する。

導線 表示条件
ヘッダーの商品メニュー 対象 collection が表示制御で許可され、可視商品が1件以上ある
検索ポップオーバーのブランド/製品タイプ導線 対象 collection が表示制御で許可され、可視商品が1件以上ある
商品一覧・検索サイドバー 対象 collection が表示制御で許可され、可視商品が1件以上ある
ホームの契約ブランド ブランド collection に現在の顧客から見える商品が1件以上ある
キャンペーン一覧 campaign collection が表示制御で許可され、有効 campaign code と一致し、可視商品が1件以上ある
キャンペーン詳細 campaign collection が表示制御で許可され、有効 campaign code と一致し、可視商品が1件以上ある
campaign 連動メインバナー campaignId が解決でき、上記 campaign 条件を満たし、scheduleMode の条件を満たす
campaign 非連動メインバナー displayPeriod のみで判定する。商品・collection の可視性では非表示にしない

運用上の意図

  • 連動キーを campaignId に固定し、URL 変更に耐えるようにする
  • displayPeriod は campaign の期間設定と混ぜず、バナー独自の掲出制御として維持する
  • 連動バナーでも壊れた導線を出さないよう、公開対象でない campaign にはリンクさせない
  • 商品がない campaign や collection への導線を出さず、遷移後に空一覧だけが表示される状態を避ける