如果产品属于特定类别,WooCommerce会添加自定义价格

时间:2017-01-12 11:23:17

标签: php wordpress woocommerce categories cart

我需要使用 woocommerce_before_calculate_totals 挂钩向WooCommerce购物车添加自定义价格并且它完美运行:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
     $custom_price = 50; // This will be your custome price  
     foreach ( $cart_object->cart_contents as $key => $value ) {
        $value['data']->price = $custom_price;
     }

 }

现在我想仅在产品属于特定类别时才将此自定义价格添加到购物车。

这可能吗?

由于

1 个答案:

答案 0 :(得分:0)

已更新 (2018年10月)

您需要在条件中使用has_term()函数,这样:

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

     // HERE Set your defined category (ID, slug or Name)
     $defined_category = 23;   

     // HERE This will be your custom price
     $custom_price = 50;  

     // Loop through cart items
     foreach ( $cart->get_cart() as $cart_item ) {
        if( has_term( $defined_category, 'product_cat', $cart_item['product_id'] ) ) {   
            // Set the new cart item price
            if( version_compare( WC_VERSION, '3.0', '<' ) )
                $cart_item['data']->price = $custom_price;
            else
                $cart_item['data']->set_price($custom_price);
        }
    }
}

代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。