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を知っていれば、購入ができてしまいます。
サイトとして大きくなってきた場合には課題になると思いますが、はじめは大きな問題にはならないと思いますので、低コストで実現する方法としてはアリだと思います。


