「Welcart」 は日本製のWordPress 専用ショッピングカートプラグインです。
ちょー有名なカートプラグイン「WooCommerce」 に比べ、アドオンや拡張機能がすくないものの、
日本的な地域別送料の計算や、カスタマイズが容易なことから、人気のプラグインです。
私も、初心者にもお勧めしやすいショッピングカートプラグインとして、紹介しています。
「Welcart」で送料の計算をする際、買い物点数の合計個数で、1個口、2個口と送料計算をする機会がありました。
その際の送料計算方法をカスタマイズしましたのでメモ的に。
- 商品を1つずつパッキング。
- 指定の段ボール1箱に6個まで入るので、6個で1個口の梱包。
- 送料=個口×地域規定の送料
例えば、北海道地方の基本送料は1,200円。
合計個数6個までは基本送料 1,200円。
合計個数7個以上12個のお買い上げ(2個口)での送料は、1,200×2=2,400円
といった場合に利用できるフィルターです。
下記のソースコードを、テーマのfunctions.php に追記。
/** 商品合計6個毎に送料計算 **/ function my_set_cart_shipping_charge($charge, $cart, $entry) { global $usces; $unit_border = 6; //制限する個数 $quantity = $usces->get_total_quantity(); //カートでの合計購入個数 if($quantity > $unit_border) { $charge = $charge * (intdiv($quantity + 5, $unit_border)); //数字「5」のところは $unit_border (制限する個数)から ―1 した数字 にする //intdivでの計算結果は整数となるので、カートでの合計購入個数に制限する個数を加算してから除算 } return $charge; } add_filter('usces_filter_getShippingCharge', 'my_set_cart_shipping_charge', 10, 3);
ポイントとは、下記。
$charge = $charge * (intdiv($quantity + 5, $unit_border));
intdiv ( int $num1 , int $num2 ) は、num1 を num2 で割った整数商を返すので、
例えば、合計個数 13個の場合、13 ÷ 6 = 2 という値を返します。
いや待て。
6個で1個口なんだから、13個だと「2あまり1」で、箱は3個いるじゃん?
答えは「3」じゃないとダメじゃん?
そうですね。
なので、合計購入個数 $quantity に + 6 したものを、個口単位で割ります。
そうすると、合計個数 13個の場合、(13 +6 ) ÷ 6 =3 あまり 1
intdiv ( 13 +6 , 6 ) は「3」になります。
解決~。