SNSフォローボタン

Welcart で特定の商品がカートに入っているかの条件に応じて送料・代引き手数料を変更するカスタマイズ方法

Welcart では様々な条件によって送料や代引き手数料を変更するカスタマイズが行えます。この記事では、カート内に特定の商品が入っているかどうかという条件によって送料や代引き手数料の金額を変更するカスタマイズ方法を説明します。

商品の合計金額や総個数の条件によって送料や代引き手数料を変更するカスタマイズ方法については下記記事をご参考ください。

usces_filter_set_cart_fees_shipping_charge フックを利用し、条件に応じて送料を変更する様々なカスタマイズを自由に行うことができます。こちらの記事ではその方法を解説しています。
usces_filter_set_cart_fees_cod フックを利用し、条件に応じて代引き手数料を変更する様々なカスタマイズを自由に行うことができます。こちらの記事ではその方法を解説しています。

カスタマイズではテーマ内の PHP ファイルの編集を行います。ご自身での対応に自信がない場合、カスタマイズ対応も承っておりますのでお問い合わせフォームからお気軽にお問い合わせいただければと思います。

使用するフック

使用するフック:usces_filter_set_cart_shipping_charge (送料), usces_filter_set_cart_fees_cod (代引き手数料)
フック記述箇所:usc-e-shop/classes/usceshop.class.php

カスタマイズ例

カート内に特定の商品が特定個数以上入っているかによって送料を変更する場合

「カート内に SKU がitem001の商品が3個以上入っている場合に、送料を無料にする」といった設定の場合のサンプルコードです。

add_filter('usces_filter_set_cart_fees_shipping_charge', 'customized_set_cart_fees_shipping_charge', 10, 3);
function customized_set_cart_fees_shipping_charge($shipping_charge, $carts, $entries) {
   // 送料を無料にする SKU の設定
   $free_sku = 'item001';
   $free_sku_in_cart = false;

   // カート内に該当商品があるかどうか調べます。
   foreach ($carts as $item) {
      if ($item['sku'] == $free_sku && $item['quantity'] >= 3) {
         $free_sku_in_cart = true;
         break;
      }
   }

   // カート内に該当商品がある場合は、送料を無料にします。
   if ($free_sku_in_cart) {
      $shipping_charge = 0;
   }

   return $shipping_charge;
}

カート内にある商品の SKU と個数をチェックして条件を満たしている場合は$free_sku_in_cartフラグを設定し、それによって送料を変更しています。条件に当てはまらない場合は、元の送料から変更されません。

カート内に特定の複数の商品が入っているかによって代引き手数料を変更する場合

「カート内に SKU がitem001item002の商品が入っている場合、代引き手数料を無料にする」といった設定の場合のサンプルコードです。

add_filter('usces_filter_set_cart_fees_cod', 'customized_set_cart_fees_cod', 10, 7);
function customized_set_cart_fees_cod($cod_fee, $entries, $total_items_price, $use_point, $discount, $shipping_charge, $amount_by_cod) {
   global $usces;

   // 送料を無料にする SKU の設定
   $free_skus = array('item001', 'item002');
   $free_sku_in_cart = false;

   // カート情報の取得
   $carts = $usces->cart->get_cart();

   // カート内に該当商品があるかどうか調べます。
   foreach ($carts as $item) {
      if (in_array($item['sku'], $free_skus)) {
         $free_sku_in_cart = true;
         break;
      }
   }

   if ($free_sku_in_cart) {
      $cod_fee = 0;
   }
   return $cod_fee;
}

カート情報を$usces->cart->get_cart()で取得し、カート内にある商品の SKU をチェックして条件を満たしている場合は$free_sku_in_cartフラグを設定し、それによって代引き手数料を変更しています。条件に当てはまらない場合は、元の代引き手数料から変更されません。

確認方法

functions.php にカスタマイズ内容のコードを追加して保存を行った後は、カートに商品を入れて注文入力を進めて表示される注文確認画面の送料欄や代引き手数料欄で実際に送料や代引き手数料が変更されるかを確認することができます。

最後に

お得なキャンペーン商品などを設定したい場合にこちらのカスタマイズで設定を行うことができますので機会がありましたら利用してみてください。上手く動作しない場合やより複雑な条件を設定したい場合は、下記お問い合わせフォームにてカスタマイズのご相談や対応も受け付けております。