Woocommerce - 基于产品数量的额外费用

时间:2015-01-22 21:58:50

标签: wordpress woocommerce

我在此处(下方)的帖子中找到了这个答案,但我想知道如果产品数量发生变化,有什么方法可以根据数量增加额外费用? 可以说一个包中有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);
}

}

1 个答案:

答案 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);
    }

}