WooCommerce 购物车仅对常规商品的第二个商品提供折扣
WooCommerce cart discount from second item on regular items only
我在 Whosebug 上找到了这段代码,它满足了我的需要,除了我需要在购物车中添加 2 个产品后立即为每个产品应用 -5 欧元的折扣。
示例:
- 对于购物车中的 1 件产品,用户将获得 0 欧元的折扣
- 对于购物车中的 2 个产品,用户将获得 5 欧元的折扣
- 对于购物车中的 3 件产品,用户将获得 10 欧元的折扣
- 对于购物车中的 4 件产品,用户将获得 15 欧元的折扣
- 对于购物车中的 5 件产品,用户将获得 20 欧元的折扣
等等...
add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only when there is 2 or more items in cart
if( $cart->get_cart_contents_count() >= 2):
// Initialising variable
$is_on_sale = false;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product = $cart_item['data'];
// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}
## Discount calculation ##
// fixed reduction price
$reduction = 5;
## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '-5€ à partir du 2ème article commandé', -$reduction);
endif;
}
感谢任何帮助。
你们真亲密。
您知道购物车 $cart->get_cart_contents_count()
中的商品数量,并且希望在第一个产品之后开始打折。
替换$reduction = 5;
用这个$reduction = 5*($cart->get_cart_contents_count() - 1);
您的完整代码应如下所示:
add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only when there is 2 or more items in cart
if( $cart->get_cart_contents_count() >= 2):
// Initialising variable
$is_on_sale = false;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product = $cart_item['data'];
// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}
## Discount calculation ##
// fixed reduction price
$reduction = 5*($cart->get_cart_contents_count() - 1);
## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '-5€ à partir du 2ème article commandé', -$reduction);
endif;
}
您最好使用以下仅计算常规商品(而不是“打折”商品)并根据从第二个商品开始的特定数量应用折扣的商品:
add_action('woocommerce_cart_calculate_fees' , 'progressive_fixed_discount', 10, 1);
function progressive_fixed_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initialising variable
$regular_items_count = -1;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Count only on regular items (not "on sale" items)
if( ! $cart_item['data']->is_on_sale() ){
$regular_items_count += $cart_item['quantity'];
}
}
// Only for regular items starting on the 2nd item (not "on sale" items)
if ( $regular_items_count > 0 ) {
// Progressive fixed discount calculation on regular items only
$discount = 5 * $regular_items_count;
// Apply a discount for "on sale" items only
$cart->add_fee( __("-5€ à partir du 2ème article commandé", "woocommerce"), -$discount );
}
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
一些相关的similar answers threads:
- Custom discount for every NTH item in the cart
- WooCommerce: Add a discount based on individual items quantity
添加 - 排除产品类别:
Replace:
if( ! $cart_item['data']->is_on_sale() ){
with:
if( ! $cart_item['data']->is_on_sale() && ! has_term( array( 5537 ), 'product_cat', $cart_item['product_id'] ) ) {
我在 Whosebug 上找到了这段代码,它满足了我的需要,除了我需要在购物车中添加 2 个产品后立即为每个产品应用 -5 欧元的折扣。
示例:
- 对于购物车中的 1 件产品,用户将获得 0 欧元的折扣
- 对于购物车中的 2 个产品,用户将获得 5 欧元的折扣
- 对于购物车中的 3 件产品,用户将获得 10 欧元的折扣
- 对于购物车中的 4 件产品,用户将获得 15 欧元的折扣
- 对于购物车中的 5 件产品,用户将获得 20 欧元的折扣
等等...
add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only when there is 2 or more items in cart
if( $cart->get_cart_contents_count() >= 2):
// Initialising variable
$is_on_sale = false;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product = $cart_item['data'];
// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}
## Discount calculation ##
// fixed reduction price
$reduction = 5;
## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '-5€ à partir du 2ème article commandé', -$reduction);
endif;
}
感谢任何帮助。
你们真亲密。
您知道购物车 $cart->get_cart_contents_count()
中的商品数量,并且希望在第一个产品之后开始打折。
替换$reduction = 5;
用这个$reduction = 5*($cart->get_cart_contents_count() - 1);
您的完整代码应如下所示:
add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only when there is 2 or more items in cart
if( $cart->get_cart_contents_count() >= 2):
// Initialising variable
$is_on_sale = false;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product = $cart_item['data'];
// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}
## Discount calculation ##
// fixed reduction price
$reduction = 5*($cart->get_cart_contents_count() - 1);
## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '-5€ à partir du 2ème article commandé', -$reduction);
endif;
}
您最好使用以下仅计算常规商品(而不是“打折”商品)并根据从第二个商品开始的特定数量应用折扣的商品:
add_action('woocommerce_cart_calculate_fees' , 'progressive_fixed_discount', 10, 1);
function progressive_fixed_discount( $cart ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) && ! is_user_logged_in() )
// if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initialising variable
$regular_items_count = -1;
// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Count only on regular items (not "on sale" items)
if( ! $cart_item['data']->is_on_sale() ){
$regular_items_count += $cart_item['quantity'];
}
}
// Only for regular items starting on the 2nd item (not "on sale" items)
if ( $regular_items_count > 0 ) {
// Progressive fixed discount calculation on regular items only
$discount = 5 * $regular_items_count;
// Apply a discount for "on sale" items only
$cart->add_fee( __("-5€ à partir du 2ème article commandé", "woocommerce"), -$discount );
}
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
一些相关的similar answers threads:
- Custom discount for every NTH item in the cart
- WooCommerce: Add a discount based on individual items quantity
添加 - 排除产品类别:
Replace:
if( ! $cart_item['data']->is_on_sale() ){
with:
if( ! $cart_item['data']->is_on_sale() && ! has_term( array( 5537 ), 'product_cat', $cart_item['product_id'] ) ) {