SNSフォローボタン

Welcart で合計金額や商品個数の条件に応じて送料を変更するカスタマイズ方法

Welcart の基本設定では注文する商品の合計金額によって送料を無料とする設定が行えますが、それ以外の条件や送料を無料以外の金額に変更する設定にしたい場合はカスタマイズが必要となってきます。この記事では、合計金額や商品個数の条件に応じて送料を変更するカスタマイズ方法を説明していきます。カスタマイズにはフックを利用します。フックの仕組みや使い方についてはこちらの記事をご確認ください。

WordPress に用意されているフックを利用するとテーマやプラグインに新たな機能を追加したり表示内容を変更したりカスタマイズを行うことができます。この記事ではフックの基本や使い方を解説しています。

合計金額や商品個数の条件に応じて代引き手数料を変更するカスタマイズ方法についてはこちらの記事をご確認ください。

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

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

Welcart の送料無料設定

Welcart の標準の基本設定では「注文合計金額(カート内の商品の合計金額)が○○円以上の場合、送料を無料にする」という設定しか行えません。カスタマイズを実装することによって「カート内の商品の合計金額が〇〇円以上の場合、送料を〇〇円とする」といった設定や「カート内の商品の総個数が〇〇個以上の場合、送料を〇〇円加算する」といった様々な設定に自由に変更することができます。

フックの利用準備

使用するフック:usces_filter_set_cart_fees_shipping_charge
フック記述箇所:usc-e-shop/classes/usceshop.class.php

テーマの functions.php の一番下に下記のコードを追加します。一番下に?>が書かれている場合はその上に追加してください。customized_set_cart_fees_shipping_chargeという関数名の部分は自由にわかりやすい名前を付けていただいて構いません。

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) {
   // 基本の送料が計算されて $shipping_charge に入った状態で呼び出されます。
   // ここに条件と送料 $shipping_charge を変更する処理を書きます。
   return $shipping_charge;
}

送料を変更することができるusces_filter_set_cart_fees_shipping_chargeフックを利用し、条件と送料を変更するコードを追加しカスタマイズを実装します。基本の送料が計算された後にこちらが呼び出されます。条件に該当しない場合は、送料は変更されず元のままの金額となります。

カスタマイズ例

カート内の商品の合計金額によって送料を変更する場合

「カート内の商品の合計金額が 10,000 円以上で送料が 1,000 円以上の場合、送料を 1,000 円にする」といった設定の場合のサンプルコードです。

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) {
   // カート内の商品の合計金額を取得します。
   global $usces;
   $total_price = $usces->get_total_price();

   // 合計金額が 10,000 円以上で送料が 1,000 円以上の場合、送料を 1,000 円にします。
  if ( 10000 <= $total_price && 1000 <= $shipping_charge ) {
     $shipping_charge = 1000;
   }
   return $shipping_charge;
}

$usces->get_total_price()でカート内の商品の合計金額を取得し、条件によって送料$shipping_chargeを変更しています。条件に当てはまらない場合は、元の送料から変更されません。

カート内の商品個数によって送料を一定金額加算する場合

「カート内の商品の総個数が 10 個以上の場合、送料に 300 円を加算する」といった設定の場合のサンプルコードです。

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) {
// カート内の商品の総個数を取得します。
   global $usces;
   $total_quantity = $usces->get_total_quantity();

   // 商品の総個数が 10 個以上で送料に 300 円を加算します。
  if ( 10 <= $total_quantity ) {
      $shipping_charge += 300;
   }
   return $shipping_charge;
}

$usces->get_total_quantity() でカート内の商品の総個数を取得し、条件によって送料$shipping_chargeを変更しています。条件に当てはまらない場合は、元の送料から変更されません。

確認方法

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

最後に

送料のシンプルなカスタマイズは簡単に実現できますのでぜひ挑戦してみてください。上手く動作しない場合は、下記お問い合わせフォームにてカスタマイズのご相談や対応も受け付けております。