「特定のファンクラブ会員だけに先行販売したい」
「メールマガジンを購読しているお得意様だけに限定商品を見せたい」
そんな特別な販売施策を考えたとき、真っ先に思い浮かぶのは「パスワード保護」や「専用アプリの導入」ではないでしょうか?
しかし、パスワードだと共有されるリスクがあり、アプリを入れると月額コストがかさんでしまいます……。
実は、Shopifyの標準機能である「顧客タグ」と少しの「Liquidコード」を組み合わせるだけで、特定のメールアドレス(=特定のタグを持つ顧客)のみが商品を見ることができ、購入もできる「鉄壁の限定販売システム」が月額コスト0円で構築可能です。
この記事では、標準テーマ(Dawn等)をベースに、商品ページ・一覧画面・さらに「クイック追加」の裏口まで完璧に塞ぐ実装手順を詳しく公開します。
もくじ
このカスタマイズで実現できること
この機能を導入することで、以下のようなプレミアムな販売体験が可能になります。
- ログイン必須の販売: ログインしていないユーザーは自動的にログイン画面へリダイレクト
- ターゲット限定公開: ログインしていても、特定のタグがないユーザーには「閲覧権限なし」を表示してカートボタンを隠す
- 「クイック追加」の封鎖: 商品ページだけでなく、一覧画面のポップアップからの「裏口購入」も完全にブロック
- 運用の効率化: 顧客管理画面からタグを付けるだけで、対象者を柔軟に変更可能
ステップ1:顧客と商品に「目印(タグ)」を付ける
まずは、誰が買えて、どの商品が制限対象なのかをシステムに教えるためのタグを決めます。
1. 顧客にタグを付ける
管理画面の [顧客管理] から、購入を許可したいユーザーを選択し、タグ(例:follower_club_active)を付与します。

2. 商品にタグを付ける
管理画面の [商品管理] から、限定販売にしたい商品にタグ(例:exclusive_follower)を付与します。

ステップ2:商品詳細ページのアクセス制御(詳細ガード)
次に、Dawnテーマのコードを編集して、ページが表示される前に「権限チェック」を行うロジックを追加します。
ファイル:sections/main-product.liquid
(商品詳細ページのメインコンテンツを管理しているファイルです)

- ファイルの最上部(1行目)に、以下のコードを貼り付けます。
{% comment %} 会員限定アクセス制御ロジック {% endcomment %}
{%- liquid
assign is_exclusive = false
if product.tags contains 'exclusive_follower'
assign is_exclusive = true
endif
assign has_access = false
if customer and customer.tags contains 'follower_club_active'
assign has_access = true
endif
-%}
{%- if is_exclusive -%}
{%- if customer -%}
{%- unless has_access -%}
{% comment %} ログイン済みだが権限がない場合 {% endcomment %}
<div class="page-width section-{{ section.id }}-padding text-center" style="margin: 100px auto;">
<h1>閲覧権限がありません</h1>
<p>この商品は会員様限定の限定商品です。</p>
<p>現在ログイン中のアカウントでは、閲覧・購入いただくことができません。</p>
<a href="{{ routes.all_products_collection_url }}" class="button">他の商品を見る</a>
</div>
<style>
/* 商品情報を強制的に隠す */
.product, .main-product, product-info, .product__info-wrapper { display: none !important; }
</style>
{%- endunless -%}
{%- else -%}
{% comment %} 未ログインの場合:ログイン画面へ飛ばす(戻り先をこの商品に指定) {% endcomment %}
<script>
window.location.href = "{{ routes.account_login_url }}?checkout_url={{ product.url }}";
</script>
<style>body { display:none !important; }</style>
{%- endif -%}
{%- endif -%}これにより、権限のないユーザーが商品URLを直接叩いても、ログイン画面に飛ばされるか、拒否メッセージが表示されるようになります。

ステップ3:購入ボタンの「実体」をガードする(クイック追加対策)★重要
ここが今回のカスタマイズの最大のポイントです。
実は詳細ページを隠しても、Dawnの「特集商品セクション」や「クイックバイ機能」を使うと、
商品ページに入らずにカートへ商品を追加できてしまいます。この「裏口」を塞ぐために、購入ボタンの共通パーツを制御します。
ファイル:snippets/buy-buttons.liquid

① ファイルの冒頭に判定用コードを貼る
ファイルの1行目にこれを貼り付けます。
{%- liquid
# 会員限定の判定ロジック
assign is_exclusive = false
if product.tags contains 'exclusive_follower'
assign is_exclusive = true
endif
assign can_purchase = true
if is_exclusive
unless customer and customer.tags contains 'follower_club_active'
assign can_purchase = false
endunless
endif
-%}② ボタン表示部分を「サンドイッチ」する
{%- if product != blank -%} のすぐ下に、if can_purchase を追加してボタンコード全体を挟み込みます。
【完成系イメージ】
<div {{ block.shopify_attributes }}>
{%- if product != blank -%}
{%- if can_purchase -%} {% comment %} ★ここからサンドイッチ(上) {% endcomment %}
...もともとの購入ボタン(product-form等)のコード...
{%- else -%} {% comment %} ★権限がないときの表示 {% endcomment %}
<div class="product-form">
<p style="color: #d0021b; font-weight: bold; padding: 1.5rem; border: 1px solid; border-radius: 4px; text-align: center; background: #fff5f5;">
この商品は会員限定です。ログインしてご購入ください。
</p>
</div>
{%- endif -%} {% comment %} ★サンドイッチ終わり {% endcomment %}
{%- endif -%}
...

ステップ4:商品一覧の「クイック追加ボタン」を非表示にする
最後に、一覧画面(コレクションページ等)でボタンを最初から見せないようにします。
ファイル:snippets/card-product.liquid

① ファイルの冒頭に判定用コードを貼る
ファイルの1行目に貼り付けます(変数が card_product になる点に注意!)。
{%- liquid
# 会員限定の判定
assign is_exclusive = false
if card_product.tags contains 'exclusive_follower'
assign is_exclusive = true
endif
assign can_purchase = true
if is_exclusive
unless customer and customer.tags contains 'follower_club_active'
assign can_purchase = false
endunless
endif
-%}② quick-add をサンドイッチする
ファイル内を assign product_form_id = 'quick-add-' という言葉で検索してください。見つかったボタンの塊を if can_purchase で囲みます。
{%- if can_purchase -%}
<div class="quick-add no-js-hidden">
...もともとのボタンコード...
</div>
{%- endif -%}
※ぶっちゃけ複雑なのでステップ4はやらなくてもOK!(下のように該当商品のボタンが消えるだけ)

ステップ5:動作確認と運用のコツ
実装できたら、必ず以下の3つのパターンでテストを行いましょう。
- 未ログイン時: 商品ページを開こうとするとログイン画面にリダイレクトされるか?
- タグなしログイン時: 商品ページやクイック追加画面で「限定メッセージ」が表示され、購入できないか?
- タグありログイン時: 通常通り購入できるか?
運用のコツ:月1回の会員更新はどうする?
退会者のタグ削除など、会員情報の「上書き更新」には、Shopifyアプリの定番「Matrixify」を使うのがおすすめです。
CSVで既存のタグをすべて一括削除して新しいタグを付ける、といった作業が数分で完了します。
⚠️ 注意点:テスト時の「ログインループ」に注意!
今回のカスタマイズでよくある失敗が、ログインしているのにログインページへ飛ばされ続ける「無限ループ」です。
この記事のコードは「ログイン済みか(if customer)」を最初に判定しているため対策済みですが、コードを書き換える際は必ずこの判定を残すようにしてください。
まとめ
今回のカスタマイズを使えば、外部アプリに頼ることなく、Shopifyの標準機能だけで「完全招待制」や「ファンクラブ限定」の特別な販売空間を作ることができます。
特にDawnのような最新テーマでは、一覧画面やポップアップなど、購入の入り口が多岐にわたります。
詳細ページ・一覧ボタン・購入ボタン実体の「3重ガード」をかけることで、大切な商品を確実に守りましょう。
限定商品の発売を控えているオーナー様、ぜひ試してみてください!
カスタマイズのご相談はこちら
自社ストアへの導入や、「特定のタグが複数ある場合に対応したい」「デザインをもっとこだわりたい」など、個別のご要望があればお気軽にお問い合わせください。
当ブログ お問い合わせフォーム
https://yurufuwacat.com/question/
MottuDesign公式HP CONTACTフォーム
https://mottu-design.com/contact/