![](/img/trans.png)
[英]Hide general and shipping details when adding a new order in Woocommerce admin
[英]WooCommerce Admin Create Order & Adding Shipping on Order Pay
我正在管理員中創建訂單。 我向發送給客戶的訂單支付頁面添加了一些功能(form-pay.php)。 我添加了從訂單中刪除項目以及更新您的帳單和送貨信息(訂單和帳戶)的功能。 我在刪除項目后使用 ajax 和 calculate_totals(),這很有效。
但是,我似乎無法弄清楚如何將運費應用於訂單。 當在管理員中創建訂單以及有人在前端刪除項目時,我需要發生這種情況。
我嘗試只設置運輸帖子元,但這不起作用。
function my_order_update_shipping($order_id, $items) {
$order = wc_get_order($order_id);
$order_subtotal = $order->get_subtotal();
if($order_subtotal > '17.99'){
update_post_meta($order_id, '_order_shipping', '0');
}else{
update_post_meta($order_id, '_order_shipping', '4');
}
}
add_action('woocommerce_before_save_order_items', 'my_order_update_shipping');
我怎樣才能做到這一點? 或者以這種方式應用運輸方式?
我終於弄清楚了。 效果很好,但在管理 > 創建訂單中添加/刪除項目時,您需要單擊“重新計算”按鈕。 以下代碼基於靜態小計應用了 2 種運輸方式中的一種。
$delivery_zones = WC_Shipping_Zones::get_zones();
foreach ((array) $delivery_zones as $key => $the_zone) {
$shipping_methods = $the_zone['shipping_methods'];
}
// Apply Correct Shipping Method
if ($order_subtotal > '17.99') {
$rate = $shipping_methods[2];
$item = new WC_Order_Item_Shipping();
$item->set_props(array('method_id' => $rate->id, 'total' => wc_format_decimal($rate->cost)));
$order->add_item($item);
} else {
$rate = $shipping_methods[1];
$item = new WC_Order_Item_Shipping();
$item->set_props(array('method_id' => $rate->id, 'total' => wc_format_decimal($rate->cost)));
$order->add_item($item);
}
$order->calculate_totals();
$order->save();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.