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

2013 年 10 月 8 日

ホーム フォーラム 使い方全般 [解決済み] 特定の配送方法だけ合計個数で送料を変える

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

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

    blue_apple
    参加者

    動作に関するご質問の場合は必ずご記入ください。


    WordPress のバージョン:3.6.1

    Welcart のバージョン:1.2

    ご利用のテーマ:welcart default theme

    症状を確認したブラウザ:Safari

    サーバー(会社名、サービス名):さくらレンタルサーバー

    SSLの利用: 無し | 専用SSL | 共用SSL

    WordPress のパーマリンク設定:


    配送A 送料一律 800円

    配送B 3個まで2500円、6個まで3500円、10個まで5000円

    としたいのですが

    add_filter( ‘usces_filter_getShippingCharge’, ‘override_getShippingCharge’, 10, 3);

    function override_getShippingCharge($charge) {

    global $usces;

    $total = $usces->get_total_quantity( $cart );

    if ( ($total >= 4) && ($total < 7) ) {

    $charge = 3500;

    }

    if ( ($total >= 7) && ($total <= 10) ) {

    $charge = 5000;

    }

    return $charge;

    }

    とfunctions.phpに入れたら、個数で送料を変えるのは出来たのですが

    これを配送Bだけに反映させることが出来ません。

    配送方法を指定するにはどうしたら良いのでしょうか?

    #67732

    yskysmr
    キーマスター

    フィルターフック「usces_filter_getShippingCharge」を利用されていますので、第三引数に「$entry」が渡されています。配送方法IDは

    $entry

    で取得できます。

    #67733

    blue_apple
    参加者

    yskysmrさま、下記のように$entry = 1;

    と入れてみたのですが、上手く出来ません。

    あちこち探してようやく見つけたプログラムなので

    基本的なプログラム理解していません。もう少し詳しく教えていただけますでしょうか。

    add_filter( ‘usces_filter_getShippingCharge’, ‘override_getShippingCharge’, 10, 3);

    function override_getShippingCharge($charge) {

    global $usces;

    $total = $usces->get_total_quantity( $cart );

    $entry = 1;

    if ( ($total >= 4) && ($total < 7) ) {

    $charge = 3500;

    }

    if ( ($total >= 7) && ($total <= 10) ) {

    $charge = 5000;

    }

    return $charge;

    }

    #67734

    yama11
    参加者

    細かいことまでは説明しませんがとりあえず、

    $entry = 1の場合だけ適用したいなら

    if($entry = 1)という感じで書かなければいけないと思います。if文を勉強してみてはいかがでしょう。

    これだったら

    if($entry = 1){

    if ( ($total >= 4) && ($total < 7) ) {

    $charge = 3500;

    }

    if ( ($total >= 7) && ($total <= 10) ) {

    $charge = 5000;

    }

    }

    return $charge;

    }

    で二重のif文にしてあげれば良いのでは。ただこれだけだとこの商品がある場合、この商品の送料(もしくは一番大きい送料?)に設定されてしまうため、他の送料との足し算にはならないでしょうね。

    #67735

    blue_apple
    参加者

    yama11さま、ありがとうございます。

    デザインは出来ますがプログラムは苦手で・・・

    でも、何度やっても0の場合にも適用されてしまいます??

    何度入れ直しても、キャッシュが残っているのかと再読み込みしてみても変化ありませんでした。

    「配送方法が違う場合は同時に購入できません」と注意文を入れています。

    それ以上は出来そうにありません。

    ですので、これさえ解決すれば良いのですが

    #67736

    yama11
    参加者

    すみません、if($entry = 1)だと=で代入式になってしまうかな。if($entry == 1){…でもう一度やってみてください。

    #67737

    blue_apple
    参加者

    できました〜〜!!

    ありがとうございますm(__)m

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

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