Re: 送料無料条件から送料個別課金の商品を除外する
フォーラム › 使い方全般 › 送料無料条件から送料個別課金の商品を除外する › Re: 送料無料条件から送料個別課金の商品を除外する
こんにちは。
送料計算のフックではなく、送料計算後(関数set_cart_fees内)のフックを使用する事で解決しました。
フック名:usces_filter_set_cart_fees_shipping_charge
はい、それをご利用ください。
「foreach ( $cart as $rows )」の中で「送料」を計算する際、「if( -1 == $fixed_charge_id ){」で判断して別々の集計をしています。
この判定の意味を教えて頂けないでしょうか。
Welcartの送料の算出は大きく分けて2通りがあります。一つは配送方法ごとに送料が変わる場合と、商品ごとに送料が変わる場合です。
商品ごとに送料が変わる場合の動作は、商品ごとに指定した送料のうち、カート内にある一番高い送料が適用されるようになっています。この送料ルールを適用するには、配送設定にて、配送方法の送料固定で「送料を固定しない」を選択することになります。
if( -1 == $fixed_charge_id ){
は「送料を固定しないの場合」ということになります。つまり商品ごとに設定された送料を適用するということです。
今回は問題は解決しそうですが、送料計算を自作の関数に持ち出す事に不安感はあります。
こちらでも送料のカスタマイズを行う場合は、このフックを使って計算し直していますので問題はありませんが、確かに「送料無料条件」判定の対象にするかの設定が出来るオプションがあると良いかもしれません。
ただ、Welcartの送料計算は現在でも非常に複雑になっていますので、これ以上設定を複雑にしたくないという考えもあります。
ですので現状で対応できない場合は、カスタマイズで対応できるようフックを設置しているのです。