我在此处(下方)的帖子中找到了这个答案,但我想知道如果产品数量发生变化,有什么方法可以根据数量增加额外费用? 可以说一个包中有100个项目。 (问题还在于所有包装中没有相同数量的商品,有些可以是100,有些可以是150,200或500) 例: 1-99 = 1 $。 100 =免费。 101 - 199 1 $ 200 =免费 201 - 299 = 1 $等等.. 每个产品的总价值将始终为1美元,但如果他们订购了多个具有这些商品的产品,则总数可能会更多。如果有4种具有中断成本的产品,总价格可以是4美元。
(另外,不确定在何处放置代码)
谢谢!
我在此处找到的代码:Add additional costs based on quantity in Woocommerce
// Hook before adding fees
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
/**
* Add custom fee on article specifics
* @param WC_Cart $cart
*/
function add_custom_fees( WC_Cart $cart ){
$fees = 0;
foreach( $cart->get_cart() as $item ){
// Check if odds and if it's the right item
if( $item[ 'quantity' ] % 2 == 1 && get_post_meta( $item[ 'product_id' ], 'custom_fee_for_supplier_name', true) ){
// You can also put a custom price in each produt with get_post_meta
$fees += 10;
}
}
if( $fees != 0 ){
// You can customize the descriptions here
$cart->add_fee( 'Custom fee (odds paquets)', $fees);
}
}
答案 0 :(得分:0)
数量更新后,woocommerce_after_cart_item_quantity_update
会立即触发。如果稍微修改一下你的函数(使用WC()->cart
来访问购物车对象),你可以在两个钩子上运行相同的函数。我认为它可能会继续增加额外的费用,但在我的测试中,它似乎只是以相同的费用重新计算合适的费用。
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
add_action( 'woocommerce_after_cart_item_quantity_update', 'add_custom_fees' );
/**
* Add custom fee on article specifics
* @param WC_Cart $cart
*/
function add_custom_fees(){
$fees = 0;
foreach( WC()->cart->get_cart() as $item ){
// Check if odds and if it's the right item
if( $item[ 'quantity' ] % 2 == 1 && get_post_meta( $item[ 'product_id' ], '_custom_fee_for_odds', true ) ){
// You can also put a custom price in each produt with get_post_meta
$fees += 10;
}
}
if( $fees > 0 ){
// You can customize the descriptions here
WC()->cart->add_fee( 'Custom fee (odds paquets)', $fees);
}
}