welcartで特定会員限定の商品販売
WordPressで簡単にECサイトを始められるwelcartですが、少し込み入ったことをしようとすると
カスタマイズにより実現する必要が出てきます。
今回は「一般のお客様向けには販売しないが、特定のユーザ・条件の場合にのみ販売する」という機能を実現するための方法をご紹介
簡単にいうと、「セッション」を利用します。
限定販売 実現イメージ
下記の手順で限定販売を実現します。
- 商品を購入したいお客様が商品詳細ページを閲覧
- 「カートに入れる」ボタンの代わりに表示する「問い合わせ」ボタンから問合せ
- 問合せ受領後、審査をおこなって問題なければランディングページURLを送付
- お客様は送付されたランディングページのURLから商品を購入
カスタマイズ
まずはwordpressでセッション管理を利用できるようにします。
wordpressのセッション管理
//SESSION 開始 function init_session_start(){ session_start(); } add_action('init', 'init_session_start'); [php] <!-- /wp:html --> <!-- wp:paragraph --> <p>まずはおなじみのfunction.phpから</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>wordpressでセッション管理するには、まず「セッションを利用します!」という宣言が必要なのですが、これは処理の最初に動く必要があります。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>そこでinitというフィルターフックを使って、セッション利用の宣言を記述しております。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3 id="vk-htags-d7240a80-0d46-4504-afe5-9f7e23786713">限定販売用のカート</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>商品詳細ページの「カートに入れる」ボタンを修正します。</p> <!-- /wp:paragraph --> <!-- wp:html --> [php] add_filter( 'usces_filter_item_sku_button', 'my_filter_item_sku_button', 10,3); function my_filter_item_sku_button( $html, $value, $type ) { global $usces, $post; if($_SESSION['taxonomy'] == 'available'){ return $html; } $post_id = $post->ID; $terms = get_the_terms($post_id,'post_tag'); $target_terms = [1,2]; $contact_flg = 0; foreach($terms as $term){ foreach($target_terms as $key => $value){ if($term->term_id == $value){ $contact_flg = 1; break; } } } //お問合せへ遷移 if($contact_flg == 1){ return '<b>商品お問合せの方はお問合せ下さい</b><div class="contact-item"><a name="cart_button" href ="/contact">この商品に関するお問合せ</a></div>'; }else{ return $html; } }
まずadd_filterで商品詳細ページのボタンについての機能をオーバーラップします。
処理の内容としてはこのイメージです。
セッションを利用することで、「問い合わせボタン」か「カートに入れる」かを制御しております。
今回は要件で「特定のカテゴリ」という内容もあったため、カテゴリ判定のロジックも入れております。
こちらはwelcartで取得できる情報であればなんでも制御に利用可能です。
限定商品購入用ランディングページ
ページに遷移したタイミングで、セッション情報を登録してあげます。
例えば、single-limited.phpなどをコピー新規で作成し、固定ページにテンプレートを割り当てます。
そして、single-limited.phpに下記記述を追加するイメージです。
$_SESSION['taxonomy'] = 'available';
これにより、このページを踏んだお客様限定で
特定の商品がスムーズにカートに入れられるようになります。
こちらのページのURLは問合せ頂いたお客様にのみ送付する運用で
限定商品販売という業務を実現いたしました。
課題
簡単なつくりをしているので弱点もあります。
それは「URLが知られてしまうと、誰でも購入できてしまう」ことです。
ランディングページから遷移すれば、限定商品が購入できるので
ページのURLを知っていれば、購入ができてしまいます。
サイトとして大きくなってきた場合には課題になると思いますが、はじめは大きな問題にはならないと思いますので、低コストで実現する方法としてはアリだと思います。