色んなパターンがあるよね。
「会員専用」とは何か
いくつかあるよねと。
一般的な会員専用は「会員じゃないと買えない」という仕組み。
マニアックなところでは、「会員じゃないと閲覧すらできない」という仕組み。
welcart自体にそんな機能はないし、wordpressにも会員専用にするための外部プラグインも使わないとダメやんね、という。
ギミックは自作しないといけない。
ということで、「どこを会員限定にしなきゃいけないか」をやることになる。
「会員じゃなきゃ買わせない」をする場合
要はゲスト購入を拒否すればいいので、実は簡単。
通常のお客様情報ページの会員ではない方向けの入力部のsubmitを出すのはこれ。
<?php usces_get_customer_button(); ?>出力されるとこんな感じ。
<input name="backCart" type="submit" class="back_cart_button" value="戻る" "="">
<input name="deliveryinfo" type="submit" class="to_deliveryinfo_button" value=" 次 へ " "="">
<input name="reganddeliveryinfo" type="submit" class="to_reganddeliveryinfo_button" value="会員登録しながら次へ">この「次へ」を縛ればいい。
制御はcssでも
input[type="submit"].to_deliveryinfo_button{
display: none; /* 非表示 */
pointer-events: none; /* クリック無効 */
}jsでも。
const button = document.querySelector('input.to_deliveryinfo_button');
if (button){
button.style.display = 'none'; //非表示
button.disabled = true; //クリック無効
}視覚的に消えてもいじっちゃえば使えるので微妙。
welcartを直接編集することはアップデート時に吹っ飛ぶので却下。
その代わりにfunctions.phpで出力内容を削る事ができる。
//ゲスト購入ボタン削除
add_filter('usces_filter_customer_button', 'remove_to_deliveryinfo_button');
function remove_to_deliveryinfo_button($buttons) {
return preg_replace('/<input[^>]+class="to_deliveryinfo_button"[^>]*>/', '', $buttons);
}会員限定の仕組み
「ログインしてなきゃアクセスさせないよ、ログインしてないならログインしてね、ログインできないなら会員登録してね」をしましょう。
wordpressのユーザーとwelcartの会員は違う。
まず、ログイン状態の振り分けは基本的にこう。
<?php
if( usces_is_login() ) :
echo 'ログインしてる';
else:
echo 'ログインしてない';
endif;
?>細かくするとこう。
<?php
if( usces_is_login() && usces_the_member_status('return') === '通常会員' ):
echo '通常会員';
elseif( usces_is_login() && usces_the_member_status('return') === '優良会員' ):
echo '優良会員';
elseif( usces_is_login() && usces_the_member_status('return') === 'VIP会員' ):
echo 'VIP会員';
elseif( usces_is_login() && usces_the_member_status('return') === '不良会員' ):
echo '不良会員';
else:
echo 'ログインしてない';
endif;
?>で、条件分岐を絡めてページ遷移を仕込む。
こちらの記事を参照。
is_page()とかで条件分岐を挟めば、非ログイン状態で表示するページを指定できる。

コメント