我在 WooCommerce 中使用 WooCommerce 订阅插件。当满足以下条件之一时,我正在尝试编写一个函数来对普通产品执行 10% 的折扣:
- 用户有一个有效的订阅
- 用户在他的购物车中有一个订阅产品
function vip_discount() {
$woocommerce = WC();
$items = $woocommerce->cart->get_cart();
$vip_product_id = get_subscription_product_id();
$is_vip_in_cart = is_in_cart($vip_product_id);
$vip_product_price = 0;
foreach ($items as $item) {
if( $item['variation_id'] === get_subscription_variation_id('monthly') || $item['variation_id'] === get_subscription_variation_id('quarterly') || $item['variation_id'] === get_subscription_variation_id('annually') ) {
$vip_product_price = $item['line_total'];
}
}
if ( wcs_user_has_subscription( '', '', 'active' ) || $is_vip_in_cart ) {
// Make sure that the calculation is a negative number at the end ALWAYS!
$discount = -( 10 / 100 ) * ( $woocommerce->cart->get_displayed_subtotal() - $vip_product_price);
print_r($discount);
$woocommerce->cart->add_fee( 'VIP Discount', $discount );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'vip_discount' );
问题是这个钩子由于某种原因运行了两次。它也没有应用正确的费用。它应该从负应用的费用中减去经常性项目总数,而不是费用最终作为订阅(经常性)产品价格本身。
任何补充信息或帮助表示赞赏。