答案 0 :(得分:2)
使用woocommerce_before_calculate_totals
WordPress条件函数来过滤购物车商品中的商品类别, has_term()
是正确的。这样您就可以取消购物车商品的价格。
这是代码(增加了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文件中,也可以在任何插件文件中。
此代码经过测试并有效。