特定の商品を含む場合に、送料無料にする方法

スポンサーリンク

Welcartでは送料を個別に設定することが出来ますが、例えば「送料無料の商品がカゴに入っている場合、全て送料無料になる」といった設定は出来ません。

この場合は、フックを利用して「特定の商品(SKU)がカゴに入っている場合に送料を無料にする」方法で対応出来ます。

もくじ

  1. 利用するフック
  2. functions.phpにコードを記述
  3. まとめ

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を書き込むことで対応しました。

フックを使えばそこまで難しいカスタマイズではないので、気軽に取り入れられるかと思います。

コメントは受け付けていません。

Copyright© 2017 Welcart カスタマイズ ブログ All Rights Reserved.