特定の配送方法で、一定金額以上の場合のみ送料を無料にしたい
タグ: 特定 配送 無料
-
投稿者投稿
-
2014年6月3日 2:21 AM #70641kota1010参加者
——————————————-
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:~~~
となっている一番最初のものに適応させたいのですが。この処理ができないといちいち手動対応で
送料払い戻しといったことをしなければならなくなりそうで、
非常に困っております。すいませんがどうぞお知恵をお貸し下さい。
よろしくお願いいたします。2014年6月3日 2:27 PM #70657yskysmrキーマスター配送方法の 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 ) {
2014年6月3日 7:34 PM #70676kota1010参加者yskysmr様
早速にご丁寧なアドバイスいただきまして、本当にどうもありがとうございました。
一応考えていたことはいただいたアドバイスで実現できたのですが、
実はもっと複雑な処理が必要だったことが実装後に分かりました・・・orzさすがにプログラミング素人ではもう対応できなさそうですので、
有償カスタマイズも検討しています。ひとまずこちらは当初の目的はアドバイスのおかげで達成できました。
どうもありがとうございました。2021年3月16日 4:00 PM #92880oikawa参加者お世話になっております。
複数ある配送方法から特定の配送方法(id)を取得して、合計金額が5,000円以上の場合送料無料にするカスタマイズがしたいのですが、配送方法(id=2)の取得がうまくいかないのですが、($entry)では取得できないのでしょうか?お手数おかけしますがご教授いただけますと助かります。何卒、宜しくお願い致します。add_filter('usces_filter_getShippingCharge', 'my_filter_getShippingCharge', 10, 3); function my_filter_getShippingCharge($charge, $cart, $entry){ global $usces; $total_items_price = $usces->get_total_price($cart); if($entry == 2){ if ($total_items_price >= 5000){ $charge = 0; } } return $charge; }
——————————————-
WordPress のバージョン:5.7
Welcart のバージョン:2.1.5
PHP のバージョン:7.4.13
Welcart専用の拡張プラグインとバージョン:Welcart e-Commerce2.1.5
ご利用のテーマ:WelcartBasic の自作子テーマ
症状を確認したブラウザ:firefox
サーバー【重要】:xserver
——————————————–2021年3月16日 6:14 PM #92890sagawaキーマスターoikawa様
$entryは配列になっています。
$entry['order']['delivery_method']
で発送・支払方法ページで選択された配送方法のIDが取得できるかと思います。2021年3月17日 9:06 AM #92892oikawa参加者お世話になっております。
配送idを取得し思い通りのカスタマイズができました。
ありがとうございました。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。