WordPressのネットショップ構築プラグインWelcart(ウェルカート)で会員ポイントを取り入れた時にやったことのまとめです。
なお、Welcartのテーマは使っていないので、どのテーマにも利用できるショートコードを使った方法です。
Welcart管理画面で会員ポイント利用の設定をする
まずは管理画面のWelcart関係で設定した項目です。
Welcart Shop 基本設定
WordPress管理画面メニューより、[Welcart Shop] > [基本設定]でポイント関連を設定します。
-
ポイントでキャンペーン特典を行う場合は、「営業設定」の「キャンペーン特典」でポイントの倍率を設定します。
このキャンペーン特典は、後述の「営業日設定」の「キャンペーン・スケジュール」で設定された期間に有効になります。 -
「会員ポイント」は「利用する」を選択、「ポイント率初期値」と「会員登録時ポイント」を入力、「ポイントの適用範囲」と「ポイント付与のタイミング」を選択します。
「ポイント率初期値」は空欄でも商品ごとにポイント率を設定することが出来ます。「会員登録時ポイント」は付与しない場合は空欄でOK。
Welcart Shop 営業日設定
WordPress管理画面メニューより、[Welcart Shop] > [営業日設定]でキャンペーン・スケジュールを設定します。
Welcart Shop 商品マスター
商品ごとに個別にポイント率の設定をする場合は、WordPress管理画面メニューより、[Welcart Shop] > [商品マスター]から設定します。
お客様(閲覧者)への表示
商品ページにキャンペーン時のレートと付与ポイントを表示
商品購入時の付与ポイントとキャンペーン時のポイントの倍率を本文に表示します。
記事本文に記入するので、ショートコード化します。
functions.php に記入
子テーマの functions.php に以下を記入(簡単な説明をコメントしています)。
function item_point_and_rate_func() {
global $post; //usces_the_firstSku に必要
$post_id = $post->ID; //投稿IDを取得
$sku_code = usces_the_firstSku( 'return' ); //SKU先頭のSKUコードを取得
$usces_options = get_option('usces'); //データベースのoptionsテーブルからusces(option_name)の連想配列を取得
$cp_rate = $usces_options['privilege_point']; //連想配列からキャンペーン特典のポイント倍率を取得
if('Promotionsale' == $usces_options['display_mode']): //表示モードがキャンペーン中の場合
$get_point = usces_get_point( $post_id, $sku_code ) * $cp_rate; //商品の付与ポイントにキャンペーン倍率を乗算
return '<p><span><i class="fab fa-product-hunt"></i>会員様獲得ポイント:<span class="usces-item-get-point">'.$get_point.'</span>pt</span>
<span class="usces-item-point-rate">ポイント'.$cp_rate.'倍キャンペーン中</span></p>'; //付与ポイントとキャンペーン倍率表示例
else: //表示モードがキャンペーン中でない場合
$get_point = usces_get_point( $post_id, $sku_code ); //商品の付与ポイント
return '<p><span><i class="fab fa-product-hunt"></i>会員様獲得ポイント:<span class="usces-item-get-point">'.$get_point.'</span>pt</span></p>'; //付与ポイント表示例
endif;
}
add_shortcode('your_item_point_and_rate','item_point_and_rate_func'); //ショートコードタグ追加のフック
ショートコードと本文表示例(ご参考まで)
参考ページ
会員と非会員へそれぞれ別のメーッセージを表示
会員ログイン中かログインしていないかを判別して別々のメーッセージを表示します。会員ログインユーザーには保有ポイントなどの情報も表示し、ログアウトユーザーの方には登録を促すメッセージを表示します。
会員としてログインしているか否かで条件分岐させた2種類のメッセージを2つのテンプレートファイルとし、それらをウィジェットに追加出来るようにショートコード化しました。
テンプレートファイル(ここでは login_user_message.php と not_member_message.php)は新たに作成して子テーマに入れます。
functions.php に記入
子テーマの functions.php に以下を記入します。
これは、テンプレートファイルを読み込んで、そのファイル名のショートコードをテキストウィジェットで使えるようにするコードです。
add_filter( 'widget_text', function( $ret ) { //テキストウィジェットでショートコードを使えるようにする
$php_file = 'login_user_message'; //ファイル名を変数に格納
$php_file2 = 'not_member_message'; //ファイル名を変数に格納
if( strpos( $ret, '[' . $php_file . ']' ) !== false ) { //ウィジェットコンテンツに角括弧括りのファイル名が見つかった場合
add_shortcode( $php_file, function() use ( $php_file ) { //関数を実行するショートコード追加のフック
get_template_part( $php_file ); //テンプレートパーツを読み込む
});
ob_start(); //出力のバッファリングを有効
do_shortcode( '[' . $php_file . ']' ); //ショートコード呼び出し
$ret = ob_get_clean(); //現在のバッファの内容を取得し、出力バッファを削除
}
if( strpos( $ret, '[' . $php_file2 . ']' ) !== false ) { //ウィジェットコンテンツに角括弧括りのファイル名が見つかった場合
add_shortcode( $php_file2, function() use ( $php_file2 ) { //関数を実行するショートコード追加のフック
get_template_part( $php_file2 ); //テンプレートパーツを読み込む
});
ob_start(); //出力のバッファリングを有効
do_shortcode( '[' . $php_file2 . ']' ); //ショートコード呼び出し
$ret = ob_get_clean(); //現在のバッファの内容を取得し、出力バッファを削除
}
return $ret; //値を返す
}, 99 );
新たに作って子テーマに入れたテンプレートファイル
会員と非会員で別のメッセージを表示して、会員には保有ポイントなどの表示、非会員には入会を促すメッセージを表示します。
login_user_message.php
<?php
if ( wel_is_logged_in() ) { //会員ログインしている場合
$mem_id = wel_logged_in_id(); //ログインしている会員のIDを取得
$member = wel_get_member( $mem_id ); //会員IDから取得できるすべての情報の配列
$name1 = $member['name1']; //配列から姓を取得
$name2 = $member['name2']; //配列から名を取得
date_default_timezone_set('Asia/Tokyo'); //タイムゾーンを日本に設定
$time = intval(date('H')); //「時」(文字列)を取得して整数に変換
if(usces_is_membersystem_point()) { //会員ポイント機能が有効の場合
$point = usces_the_member_point('return'); //ログインしている会員の保有ポイント数を取得
}
if (4 <= $time && $time <= 10) { //4時~10時台のとき
$msg = 'おはようございます。';
} elseif (11 <= $time && $time <= 17) { //11時~17時台のとき
$msg = 'こんにちは。';
} else { //それ以外の時間帯のとき
$msg = 'こんばんは。'; }
echo '<p class="login-user"><span><i class="fas fa-smile"></i>'
.$name1.' '.$name2.'様 </span><span>'.$msg.' </span>
<span>お買い物に使える</span><span><i class="fab fa-product-hunt"></i>'
.$point.'ポイントを</span><span>現在お持ちです。</span></p>'; //表示例
}
?>
not_member_message.php
<?php
$usces_options = get_option('usces'); //データベースのoptionsテーブルからusces(option_name)の連想配列を取得
$cp_rate = $usces_options['privilege_point']; //連想配列からキャンペーン特典のポイント倍率を取得
if ( !wel_is_logged_in() ) { //会員ログインしていない場合
$shoppingMsg = '<p class="user-message">
<span class="bold">合計10,000円以上</span>のご購入で
<span class="bold">送料無料</span>といたします。<br>
<span class="not-member-wrap"><span class="bold">会員様</span>にはご購入に使える
<span class="bold">ポイントを進呈</span>いたします。さらに
<span class="bold">新規ご入会時</span>には<span class="bold">100pt進呈!</span>
<span class="sign-in">会員様は<a href="#">ログイン<i class="fas fa-sign-in-alt"></i></a></span>
<span class="sign-up-wrap">新規ご入会は<a href="#"><i class="fas fa-user-plus"></i>
会員登録フォーム <i class="fas fa-angle-right"></i></a>で</span></p>'; //非会員の向けのメッセージ表示例
} elseif('Promotionsale' == $usces_options['display_mode']) { //会員ログイン中で表示モードがキャンペーン中の場合
$shoppingMsg = '<p class="user-message">
<span class="bold">合計10,000円以上</span>のご購入で
<span class="bold">送料無料</span><br>
<span class="item-pt-rate">只今、<span class="bold">
ポイント'.$cp_rate.'倍</span>キャンペーン実施中</span></p>'; //キャンペーン中のメッセージ表示例
} else { //会員ログイン中で表示モードがキャンペーン中じゃない場合
$shoppingMsg = '<p class="user-message">
<span class="bold">合計10,000円以上</span>のご購入で
<span class="bold">送料無料</span>といたします'; //会員用通常メッセージ表示例
}
echo $shoppingMsg; //メッセージの表示
?>
ショートコードと本文表示例(ご参考まで)
[not_member_message] [login_user_message]
参考ページ
以上、長文をここまでご覧下さり、ありがとうございます。ご参考になれば幸いです。













コメント