特定の配送方法で、一定金額以上の場合のみ送料を無料にしたい

2014 年 6 月 3 日

ホーム フォーラム 使い方全般 特定の配送方法で、一定金額以上の場合のみ送料を無料にしたい

このトピックには2件の返信が含まれ、2人の参加者がいます。3 年、 4 ヶ月前 kota1010 さんが最後の更新を行いました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #70641

    kota1010
    参加者

    ——————————————-
    WordPress のバージョン:3.9.1
    Welcart のバージョン:1.4.2
    ご利用のテーマ:オリジナル
    症状を確認したブラウザ:Firefox29 win
    サーバー(会社名、サービス名):海外、IIS
    SSLの利用:未使用
    WordPress のパーマリンク設定:/%category%/%post_id%/
    ——————————————–

    いつも大変お世話になっております。

    やりたいことは、複数の配送方法を設定している中で、
    ある一つの配送方法を選び、なおかつ
    その購入金額が10000円以上になった場合にのみ
    送料を無料にしたい、ということです。

    配送方法が指定したもの以外の場合は、
    指定配送方法でも購入金額10000円未満の場合は
    設定した送料を上乗せにしたいです。

    以下の過去ログを参考にして、

    [解決済み] 特定の配送方法だけ合計個数で送料を変える

    このようなコードをfunctions.phpに書いてみました。

    add_filter( ‘usces_filter_getShippingCharge’, ‘my_getShippingCharge’, 10, 3);
    function my_getShippingCharge($charge) {
    global $usces;
    $total = $usces->get_total_price( $cart );
    if ($entry == 0) {
    if ($total >= 10000) {
    $charge = 0;
    }
    }
    return $charge;
    }

    が、どの配送方法でも10000円以上が送料無料になってしまいます。

    どうしたらいいのか、教えていただけませんでしょうか。

    ちなみに配送方法のIDは0からの始まりでいいのでしょうか。
    配送設定画面の「配送名」のプルダウンで、
    0:~~~
    となっている一番最初のものに適応させたいのですが。

    この処理ができないといちいち手動対応で
    送料払い戻しといったことをしなければならなくなりそうで、
    非常に困っております。すいませんがどうぞお知恵をお貸し下さい。
    よろしくお願いいたします。

    #70657

    yskysmr
    キーマスター

    配送方法の id は、ソート順(優先順位「0:」)とは別物になります。

    ‘usces_filter_getShippingCharge’ というフィルターフックをお使いですので、そのフックがある「getShippingCharge」関数をご参照ください。

    $entry から「配送方法ID」を取得している箇所があると思います。
    こちらが、サイトで購入者が選択した配送方法の id です。

    次に、優先順位が最上位の配送方法の id は、以下のようにして得られます。

    
    $options = get_option('usces');
    $first_id = $options['delivery_method'][0]['id'];
    

    $options[‘delivery_method’][0] のところが優先順位です。

    また、function my_getShippingCharge の引数は以下のようにしませんと、$cart と $entry は得られませんのでご注意ください。

    
    function my_getShippingCharge( $charge, $cart, $entry ) {
    
    #70676

    kota1010
    参加者

    yskysmr様

    早速にご丁寧なアドバイスいただきまして、本当にどうもありがとうございました。

    一応考えていたことはいただいたアドバイスで実現できたのですが、
    実はもっと複雑な処理が必要だったことが実装後に分かりました・・・orz

    さすがにプログラミング素人ではもう対応できなさそうですので、
    有償カスタマイズも検討しています。

    ひとまずこちらは当初の目的はアドバイスのおかげで達成できました。
    どうもありがとうございました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)

このトピックに返信するにはログインが必要です。