ポイントが利用できる最低購入金額の設定
スポンサーリンク
このカスタマイズは「利用できる最低ポイント数を設定する方法」の一部をアレンジしたものです。
ポイントの使用に「○○円以上のお買い上げ」という条件を追加したい場合に行います。
カスタマイズ手順
- wc_confirm_page.phpを使用中のテンプレートに設置
- 退避させたwc_confirm_page.php内のポイント表示部分のコードを変更する
1. wc_confirm_page.phpを使用中のテンプレートに設置する
※既に使用中テーマにwc_confirm_page.phpを組み込んでいる方は、飛ばして下さい。
今回は、カート内の「内容確認」のページをカスタマイズします。Welcart用のテンプレートをカスタマイズする場合は、必要なテンプレートを使用中のテーマ内に設置(退避)する必要があります。
「内容確認」を制御しているのは、Welcart内プラグインの以下の場所にあるwc_confirm_page.phpというテンプレートです。
このテンプレートを、使用中のテーマに設置します。設置する場所は、welcart_default(Welcartのデフォルトテーマ)内のフォルダ階層と同じようになるようにします。
- 使用中のテーマ
- wc_templates
- cart
- wc_confirm_page.php ←ココ
- cart
- wc_templates
カスタマイズは、この新たに設置したwc_confirm_page.phpで行います。
2. 退避させたwc_confirm_page.php内のポイント表示部分のコードを変更する
「利用できる最低ポイント数を設定する方法」と同様に、ポイントを表示しているテーブルの表示を変更します。
2-1. ポイント利用の表示をしているコードを確認
ポイント利用の表示を行っているのは、wc_confirm_page.php内の102~120行目の以下のコードです。※102行目と120行目は、ポイント制を利用しているか等を判別する条件分岐で、実際の入力フォームは103~119行目になります。
<?php if( usces_is_member_system() && usces_is_member_system_point() && usces_is_login() ) : ?> <form action="<?php usces_url('cart'); ?>" method="post" onKeyDown="if (event.keyCode == 13) {return false;}"> <div class="error_message"><?php usces_error_message(); ?></div> <table cellspacing="0" id="point_table"> <tr> <td><?php _e('The current point', 'usces'); ?></td> <td><span class="point"><?php echo $usces_members['point']; ?></span>pt</td> </tr> <tr> <td><?php _e('Points you are using here', 'usces'); ?></td> <td><input name="offer[usedpoint]" class="used_point" type="text" value="<?php echo esc_attr($usces_entries['order']['usedpoint']); ?>" />pt</td> </tr> <tr> <td colspan="2"><input name="use_point" type="submit" class="use_point_button" value="<?php _e('Use the points', 'usces'); ?>" /></td> </tr> </table> <?php do_action('usces_action_confirm_page_point_inform'); ?> </form> <?php endif; ?>
この中で、ポイントの入力部分を出力しているのは、110~113行目の以下のコードです。
<tr> <td><?php _e('Points you are using here', 'usces'); ?></td> <td><input name="offer[usedpoint]" class="used_point" type="text" value="<?php echo esc_attr($usces_entries['order']['usedpoint']); ?>" />pt</td> </tr>
更に、「ポイントを使う」ボタンを出力しているのは、114~116行目の以下のコードになります。
<tr> <td colspan="2"><input name="use_point" type="submit" class="use_point_button" value="<?php _e('Use the points', 'usces'); ?>" /></td> </tr>
これら二つまとめた110~116行目を、最低金額に達していない時には「商品合計○○円からポイントが利用できます」という表示に変えればいいわけですね。
では、次のステップでそのカスタマイズを行いましょう。
2-2. ポイント利用の表示部分をカスタマイズ
ポイント利用の表示部分がわかったので、条件分岐を利用して、以下のように表示を制御します。
- 設定金額以上のお買い上げ:利用ポイント入力画面と「ポイントを使用する」ボタンを表示
- 設定金額未満のお買い上げ:「○○円以上のお買い上げからポイント利用が出来ます」を表示
設定金額以上かどうかを判定する条件分岐は、以下のように書くことが出来ます。以下では1,500円(送料含まず)という設定で、1500という数字を1行目に記載しています。
<?php if( $usces_entries['order']['total_items_price'] >= 1500): ?> //ここに設定金額以上の時に表示する内容 <?php else: ?> //ここに設定金額未満の時に表示する内容 <?php endif; ?>
「//ここに設定金額以上の時に表示する内容」には、先述の110~116行目を、「//ここに設定金額未満の時に表示する内容」には「商品合計○○円からポイントが利用できます」という表示が出るようにコードを書きます。
まとめると、以下のようになります。
<?php if( $usces_entries['order']['total_items_price'] >= 1500): ?> <tr> <td><?php _e('Points you are using here', 'usces'); ?></td> <td><input name="offer[usedpoint]" class="used_point" type="text" value="<?php echo esc_attr($usces_entries['order']['usedpoint']); ?>" />pt</td> </tr> <tr> <td colspan="2"><input name="use_point" type="submit" class="use_point_button" value="<?php _e('Use the points', 'usces'); ?>" /></td> </tr> <?php else: ?> <tr> <td colspan="2">商品合計1500円以上からポイントが利用出来ます。</td> </tr> <?php endif; ?>
金額の部分は、任意の数字に変更下さいね。
以上のカスタマイズをすると、ポイント利用画面では以下のような表示になります。
2-3. 商品合計+送料の総合計金額で設定する場合
送料を含んだ合計金額で、利用ポイントの表示を設定したい場合は、最初の条件分岐のところを、
<?php if( $usces_entries['order']['total_full_price'] >= 1500): ?>
と変えればOKです。
その場合は「商品合計○○円以上から…」の文言も、「総合計金額○○円以上から…」等に変えたほうがいいですね。
いつも参考にさせていただいております、本当にありがとうございます。
ぜひぜひお聞きしたいことがあり、ご質問させてください。
ポイントについてなのですが、現在welcrtでは最低1%となっていますが
1000円で1ポイント、2000円で2ポイントといった感じでポイントを付けたい場合はどのようなフックを採用すればいいでしょうか、お忙しい中大変申し訳ありません、ご教授いただければ助かります。
ブログをお役に立てて頂きありがとうございます^^ フックを探してみましたが、プラグインフォルダのclasses/usceshop.class.phpの中に、ポイントを計算するget_order_pointという独自関数が定義されており、その中にusces_filter_get_order_pointというフィルターが設置されていました。それを使えば、ポイント計算を変更出来るかも?と思います。
1000円毎に1ポイントにするのであれば、カートの合計金額÷1000が(a)1以上なら小数点以下を切捨ててその数字をそのままポイントに(b)1未満ならポイントゼロ、みたいなコードになるでしょうか(他にも効率的な方法があるかも)。
ポイント計算はキャンペーン時かそうでないか等の分岐もあるみたいなので、カスタマイズは気持ち複雑な感じになりそうな予感ですかね~。
管理人のまめ子さま〜
お返事ありがとうございます、
気持ち複雑な感じ了解です、でもまめ子さまのお返事
めちゃくちゃ参考になりました。
本当に本当にいつもありがとうございます。
私はまめ子さんのファンです!
いえいえ~。是非頑張ってチャレンジなさってみて下さい♪私もそのうち時間が出来たらちょっと見てみたいと思います。