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 文件中或任何插件文件中。
此代码已经过测试并且有效。
我想从购物车总计中删除/取出特定类别产品的价格。
请看这张截图:
我可以使用什么钩子来做到这一点?
谢谢。
正确的做法是 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 文件中或任何插件文件中。
此代码已经过测试并且有效。