簡體   English   中英

WooCommerce 更改訂單行總計

[英]WooCommerce changing order line totals

我有一個插件,它根據產品類別應用折扣。 我正在使用下面的過濾器將文本添加到購物車中的訂單表中:

add_filter('woocommerce_cart_product_subtotal', array($this,'change_product_subtotal'), 10, 4);
add_filter( 'woocommerce_cart_product_price', array($this,'change_product_price'), 10, 2);
add_filter( 'woocommerce_cart_item_name', array($this,'change_product_name'), 10, 2);

這個動作改變了訂單/購物車的總價格。

add_action( 'woocommerce_after_calculate_totals', array($this,'ca_change_cart_total'), 10, 1 );

訂單的總價格以及修改后的產品字段都會被拉到結賬處。 然而,當訂單下達后,過濾器不再有任何效果(但總訂單價格是正確的)。 我的問題是:我需要使用哪些鈎子將購物車中的文本添加到下訂單屏幕,或者有什么替代方法可以實現相同的結果。我提供了顯示訂單階段的屏幕截圖。 感謝您的任何貢獻。 購物車頁面 結帳頁面 訂單頁面

對於任何有同樣問題的人。 我找到了使用過濾器的替代方法。 創建訂單后,循環遍歷訂單中的所有項目並更改總數。 這樣做的好處是可以有效地改變每個產品的單價,所以在 WooCommerce 管理區域中,如果您需要退款,則會顯示正確的單價。 我在下面顯示了我的代碼,顯然使用您的用例所需的任何自定義邏輯將 999 替換為每種產品的相關總價(即單價 * 數量)。

add_action('woocommerce_checkout_create_order', 'on_checkout_create_order', 20, 2);
function on_checkout_create_order( $order, $data ) {
    foreach( $order->get_items() as $item_id => $line_item ){
        $order->items[$item_id]->set_subtotal(999);
        $order->items[$item_id]->set_total(999);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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