特定の商品を含む場合に、送料無料にする方法
スポンサーリンク
Welcartでは送料を個別に設定することが出来ますが、例えば「送料無料の商品がカゴに入っている場合、全て送料無料になる」といった設定は出来ません。
この場合は、フックを利用して「特定の商品(SKU)がカゴに入っている場合に送料を無料にする」方法で対応出来ます。
もくじ
1. 利用するフック
- フックの記述・・・usces_filter_set_cart_fees_shipping_charge
- フックの場所・・・use-e-shop/classes/useshop.class.php
送料計算では度々登場する、おなじみのフックです。他にも以下のようなカスタマイズで利用しています。
2. functions.phpにコードを記述
以下のコードをfunctions.phpに追加します。
//特定のSKUがカートに入っている場合、送料無料 add_filter('usces_filter_set_cart_fees_shipping_charge', 'mysku_set_cart_fees_shipping_charge', 10, 3); function mysku_set_cart_fees_shipping_charge($shipping_charge, $carts, $entries){ $mysku = array('SKU1', 'SKU2'); //送料無料のSKUを記入 foreach($carts as $cart){ $sku = $cart['sku']; if(in_array($sku, $mysku)){ $shipping_charge = 0; } } return $shipping_charge; }
4行目の$mysku = array()のカッコ内に、送料無料商品のSKUを半角カンマで区切って入れて下さい。
3. まとめ
Welcartの送料計算のプログラムはなかなかにして複雑であるため、カートに入っているどの商品が「送料無料」なのかを取得するのは難しく、今回は一つ一つSKUを書き込むことで対応しました。
フックを使えばそこまで難しいカスタマイズではないので、気軽に取り入れられるかと思います。