Woocommerce 中特定产品类别的空购物车商品价格

Null cart item price for a specific product category in Woocommerce

我想从购物车总计中删除/取出特定类别产品的价格。

请看这张截图:

我可以使用什么钩子来做到这一点?

谢谢。

正确的做法是 woocommerce_before_calculate_totals 使用 has_term() WordPress 条件函数来过滤购物车项目中的产品类别。这样您就可以取消该购物车商品的价格。

这是代码(增加了对 Woocommerce 3+ 的兼容性)

add_action( 'woocommerce_before_calculate_totals', 'custom_price_product_category', 20, 1 );
function custom_price_product_category( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

    foreach ( $cart->get_cart() as $cart_item ) {
        // When a product has 'glass' as category we null the price.
        if( has_term( 'glass', 'product_cat', $cart_item["product_id"] ) ){
            // Added Woocommerce 3+ compatibility
            if( version_compare( WC_VERSION, '3.0', '<' ) )
                $item['data']->price = '0';
            else
                $item['data']->set_price(0);
        }
    }
}

这会出现在您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。

此代码已经过测试并且有效。