Welcart 配送方法で送料テーブルを切り替える


スポンサーリンク

Welcartで配送方法で送料テーブルを切り替える必要が出てきた。

要するに、特定の送料テーブルを必要とする商品に何か適当な配送方法を設定しておいて、その配送方法だけを選択できるようにする。

WelCartを見て、びっくりしたのだが、複数の商品購入時、配送方法の選択が最後に買い物かごに入れた商品の配送方法の選択が有効になる。

これ、まずくない?

すごくまずいと思う。

とりあえず・・・ 1商品しか購入しないという前提で。。。。

(WelCartって実は、思い付きで作ったプラグインできちんと設計されて作られたシステムでないことがわかる・・・)

Welcart 配送方法で送料テーブルを切り替える


usces_filter_getShippingCharge というフックを使ってやることで、送料を書き換えることができる。
add_filter( 'usces_filter_getShippingCharge', 'or_getShippingCharge', 10, 3);
function or_getShippingCharge($charge, $cart, $entry) {
	global $usces;
	$itemnumber = $usces->get_total_quantity( $cart ); // 合計個数
	$japcustompost = $entry['delivery']['pref']; // 配送先の県名
	$haisouhouhou  = $entry[‘order’][‘delivery_method’];

		//配送方法ID
		$d_method_id = $entry['order']['delivery_method'];

$myfile = ABSPATH."trace.txt";
$fp = fopen($myfile, "w");
fwrite($fp, "合計個数:".$itemnumber."\n" );
fwrite($fp, "配送先県名:".$japcustompost."\n");
fwrite($fp, "配送方法:".$haisouhouhou."\n"  );
fwrite($fp, "配送ID:".$d_method_id."\n"  );
fclose($fp);

$charge = 1223;
 return $charge;
}

送料を 1223 固定にしてあるが、そこはどうでもよくて、ポイントは、
$haisouhouhou  = $entry[‘order’][‘delivery_method’];
だ。

これで配送IDをつかんで、特定の送料テーブルを使う商品であることを知ることができる。
できれば、配送名で捕まえたかったが、どこかにテーブルがあるのだろうけどよくわからない。

まぁ、このIDで判断して、テーブルを読みこんでチェックすればいいということになる。
結構手間ですな。


Q&Aでは「getShippingCharge」に変数の採り方が出ているとのことですが・・・

$this-> は使えないわけだから・・・

ワードプレスのフックって機能は、便利だけど、実態がどこにあるか探せないってのが致命的。

なんか方法があるのかなぁ?

スポンサーリンク