如果用户第一次订购,我需要在税前计算中对购物车小计应用折扣。但是,税收是在WooCommerce中按项目计算的,之后会添加到小计中。 所以我需要在WooCommerce计算税收之前将折扣应用到购物车中的商品。这样,税收是基于折扣价而不是原始价格。
这就是我所拥有的:
function first_order_add_five_percent_discount($cart_object) {
if ( is_user_logged_in() ) {
//current user id
$currentUser_id = get_current_user_id();
//amount of orders by current user
$orderAmount = wc_get_customer_order_count( $currentUser_id );
//if user has 0 orders...
if ($orderAmount == 0) {
//for each item in cart
foreach ( $cart_object->get_cart() as $item_values ) {
//$item_id = $item_values['data']->id; // Product ID
$item_qty = $item_values['quantity']; // Item quantity
$original_price = $item_values['data']->price; // Product original price
echo $original_price . "<br>";
$totalPrice = $original_price * $item_qty;
$discountedPrice = $totalPrice * .05;
$newPrice = $original_price - $discountedPrice;
echo $totalPrice . "<br>";
echo $discountedPrice . "<br>";
echo $newPrice . "<br>";
$item_values['data']->set_price($newPrice);
}
} else {
//do nothing
}
}
}
add_action( 'woocommerce_before_calculate_totals', 'first_order_add_five_percent_discount' );
这回应了我需要的正确数字,但现在我需要将这些价格应用到购物车中。现在购物车的价格不会改变。
如何将此功能的计算中的新价格应用到购物车?
答案 0 :(得分:3)
更新:使用收取负费用不是最好的方式,也不是Woocommerce推荐的。
请注意,税款将始终适用。
尝试改为:
- Cart item quantity progressive percentage discount in Woocommerce 3
- Cart item discount based on quantity in Woocommerce 3
- Apply automatically a coupon based on specific cart items count in Woocommerce
有一种更简单的方法,就是使用负费用,这么折扣。它使用WC_Cart
方法add_fee()
,您可以在其中停用税:
add_action( 'woocommerce_cart_calculate_fees','new_customers_discount', 10, 1 );
function new_customers_discount( $wc_cart ) {
if ( is_admin() && ! defined('DOING_AJAX') ) return; // We exit
// Only for logged in users
if ( ! is_user_logged_in() ) return; // We exit
// Only for new customers without orders
if ( wc_get_customer_order_count( get_current_user_id() ) != 0 ) return; // We exit
// discount percentage
$percent = 5;
// Calculation
$discount = $wc_cart->cart_contents_total * $percent / 100;
$wc_cart->add_fee( __( 'Discount', 'woocommerce')." ($percent%)", -$discount );
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
经过测试和工作。你会得到类似的东西:
正如您所看到的,折扣是购物车内容总额的折扣。税