簡體   English   中英

WooCommerce 管理員創建訂單並在訂單付款時添加運費

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM