在WooCommerce网站上,我试图弄清楚如果购物车中只有虚拟产品,如何停止增加手续费。他们在销售虚拟礼券和实物商品,因此,如果购物车中有带有虚拟礼券产品的实物商品,他们仍然需要收费。但是,例如,如果客户的购物车中只有虚拟礼券,则无需支付处理费用。
这就是我在他们的functions.php中所拥有的,有关添加处理的动作。我只是不知道该放什么来测试购物车中的虚拟产品。
/* Add handling fee of $3 to cart at checkout */
add_action( 'woocommerce_cart_calculate_fees','handling_fee' );
function handling_fee() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$fee = 3.00;
$woocommerce->cart->add_fee( 'Handling', $fee, false, 'standard' );
}
答案 0 :(得分:0)
我知道了。这是有效的代码。
/* Add handling fee of $3 to cart at checkout */
add_action( 'woocommerce_cart_calculate_fees','handling_fee' );
function handling_fee() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// First test if all products are virtual. Only add fee if at least one product is physical.
$allproductsvirtual = true;
$fee = 0;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {
$product = $values['data'];
if( !$product->is_virtual() ){
$allproductsvirtual = false;
}
}
if ( !$allproductsvirtual ) {
$fee = 3.00;
}
$woocommerce->cart->add_fee( 'Handling', $fee, false, 'standard' );
}