根据 Woocommerce 购物车重量应用累进折扣
Apply a progressive discount based on Woocommerce cart weight
我正在寻找一种根据购物车总重量应用折扣(百分比)的方法。
示例:
- 10到25公斤,定5折
- 26到50公斤,定7.5折
- 51到100公斤,定10折
- 101到150公斤,定12.5折
- 超过150公斤,定15折
当其中一个规则被应用时,应该会有一条消息也像图片中显示的这个付款折扣。
Payment method discount
如果可能的话,还会显示像 'added to cart message box' 这样的消息框,它会显示客户必须订购多少才能获得第二个折扣规则中的第一个,例如:多订购 **kg 并获得 5% 的折扣。
我不知道如何做到这一点,所以很遗憾我没有尝试任何东西。
提前致谢。
此致,
瓦斯科
欢迎使用 Whosebug!
$applied_discount = 0;
add_filter( 'woocommerce_calculated_total', 'add_conditional_discount_by_weight', 10, 2 );
function add_conditional_discount_by_weight( $total, $cart ) {
global $applied_discount;
$total_weight = WC()->cart->get_cart_contents_weight(); // gets cart weight
if($total_weight >= 10 || $total_weight <= 25){
$applied_discount = 5;
return $total*(1-($applied_discount/100));
}
}
add_action( 'woocommerce_cart_totals_after_order_total', 'display_applied_discount' );
function display_applied_discount() {
global $applied_discount;
if($applied_discount > 0){
$discount = WC()->cart->total * ($applied_discount/100);
?>
<tr class="order-total">
<th><?php esc_html_e( "Applied Discount ($applied_discount%)", 'woocommerce' ); ?></th>
<td><?php echo "$".$discount ?></td>
</tr>
<?php
}
}
这是回答您问题的代码片段。我只添加了一个重量条件。其他的条件相信你自己会填的。
可以将代码段添加到您的 functions.php(只要它是 child theme, otherwise your code will be deleted after a theme update!) or as a code snippet using plugins such as Code Snippets
您可以使用负费用根据购物车重量进行累进折扣,如下所示:
add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_discount', 30, 1 );
function shipping_weight_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_weight = $cart->get_cart_contents_weight();
$cart_subtotal = $cart->get_subtotal(); // Or $cart->subtotal;
$percentage = 0;
if ( $cart_weight >= 10 && $cart_weight <= 25 ) {
$percentage = 5;
} elseif ( $cart_weight > 25 && $cart_weight <= 50 ) {
$percentage = 7.5;
} elseif ( $cart_weight > 50 && $cart_weight <= 100 ) {
$percentage = 10;
} elseif ( $cart_weight > 100 && $cart_weight <= 150 ) {
$percentage = 12.5;
} elseif ( $cart_weight > 150 ) {
$percentage = 15;
}
// Apply a calculated discount based on weight
if( $percentage > 0 ) {
$discount = $cart_subtotal * $percentage / 100;
$cart->add_fee( sprintf( __( 'Weight %s discount', 'woocommerce' ), $percentage.'%'), -$discount );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
基于:
我正在寻找一种根据购物车总重量应用折扣(百分比)的方法。 示例:
- 10到25公斤,定5折
- 26到50公斤,定7.5折
- 51到100公斤,定10折
- 101到150公斤,定12.5折
- 超过150公斤,定15折
当其中一个规则被应用时,应该会有一条消息也像图片中显示的这个付款折扣。 Payment method discount
如果可能的话,还会显示像 'added to cart message box' 这样的消息框,它会显示客户必须订购多少才能获得第二个折扣规则中的第一个,例如:多订购 **kg 并获得 5% 的折扣。
我不知道如何做到这一点,所以很遗憾我没有尝试任何东西。 提前致谢。
此致, 瓦斯科
欢迎使用 Whosebug!
$applied_discount = 0;
add_filter( 'woocommerce_calculated_total', 'add_conditional_discount_by_weight', 10, 2 );
function add_conditional_discount_by_weight( $total, $cart ) {
global $applied_discount;
$total_weight = WC()->cart->get_cart_contents_weight(); // gets cart weight
if($total_weight >= 10 || $total_weight <= 25){
$applied_discount = 5;
return $total*(1-($applied_discount/100));
}
}
add_action( 'woocommerce_cart_totals_after_order_total', 'display_applied_discount' );
function display_applied_discount() {
global $applied_discount;
if($applied_discount > 0){
$discount = WC()->cart->total * ($applied_discount/100);
?>
<tr class="order-total">
<th><?php esc_html_e( "Applied Discount ($applied_discount%)", 'woocommerce' ); ?></th>
<td><?php echo "$".$discount ?></td>
</tr>
<?php
}
}
这是回答您问题的代码片段。我只添加了一个重量条件。其他的条件相信你自己会填的。
可以将代码段添加到您的 functions.php(只要它是 child theme, otherwise your code will be deleted after a theme update!) or as a code snippet using plugins such as Code Snippets
您可以使用负费用根据购物车重量进行累进折扣,如下所示:
add_action( 'woocommerce_cart_calculate_fees', 'shipping_weight_discount', 30, 1 );
function shipping_weight_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_weight = $cart->get_cart_contents_weight();
$cart_subtotal = $cart->get_subtotal(); // Or $cart->subtotal;
$percentage = 0;
if ( $cart_weight >= 10 && $cart_weight <= 25 ) {
$percentage = 5;
} elseif ( $cart_weight > 25 && $cart_weight <= 50 ) {
$percentage = 7.5;
} elseif ( $cart_weight > 50 && $cart_weight <= 100 ) {
$percentage = 10;
} elseif ( $cart_weight > 100 && $cart_weight <= 150 ) {
$percentage = 12.5;
} elseif ( $cart_weight > 150 ) {
$percentage = 15;
}
// Apply a calculated discount based on weight
if( $percentage > 0 ) {
$discount = $cart_subtotal * $percentage / 100;
$cart->add_fee( sprintf( __( 'Weight %s discount', 'woocommerce' ), $percentage.'%'), -$discount );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
基于: