WooCommerce - 基于子类别的条件购物车计算
WooCommerce - Conditional Cart calculations based on subcategories
我有一个非常具体的项目,我需要一些不同的购物车规则。我找不到有关如何实现此目的的插件或任何其他资源。
我有子类别 1(即桌子)和子类别 2(即椅子)。用户只能从 子类别表 中添加 1 件产品,这是强制性的,并且可以从 子类别椅子 中添加任意数量的产品,这不是强制性的。
我需要下一条规则: 如果用户还添加了 子类别椅子 中的产品,则减去 的总价来自 子类别桌子 产品的子类别椅子 产品。同样在这种情况下,如果价格 < 0,则将价格设置为 0。
有谁知道我如何使用标准的 Wordpress Woocommerce 来做到这一点?
有可能做到这一点,根据您的子类别要求和计算在购物车中添加折扣…
代码:
add_action( 'woocommerce_cart_calculate_fees','table_chairs_cart_discount', 10, 1 );
function table_chairs_cart_discount($cart_object) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initializing variables
$chairs_total = 0;
$table_total = 0;
$discount = 0;
// Iterating through each cart item
foreach($cart_object->get_cart() as $item_key => $item):
$item_line_total = $item["line_total"]; // Item total price (price x quantity)
// Chairs subcategory items
if(has_term('chairs', 'product_cat', $item['product_id']))
$chairs_total += $item_line_total;
// Table subcategory items
if(has_term('table', 'product_cat', $item['product_id']))
$table_total += $item_line_total;
endforeach;
// ## CALCULATIONS ##
if( $table_total <= $chairs_total && $chairs_total > 0 )
$discount -= $table_total;
elseif ($chairs_total > 0)
$discount -= $chairs_total;
// Adding the discount
if ($discount != 0)
$cart_object->add_fee( __( 'Chairs discount', 'woocommerce' ), $discount, false );
// Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false)
}
代码进入您的活动子主题(或主题)的 function.php 文件。或者在任何插件 php 文件中。
相关回答:
我有一个非常具体的项目,我需要一些不同的购物车规则。我找不到有关如何实现此目的的插件或任何其他资源。
我有子类别 1(即桌子)和子类别 2(即椅子)。用户只能从 子类别表 中添加 1 件产品,这是强制性的,并且可以从 子类别椅子 中添加任意数量的产品,这不是强制性的。
我需要下一条规则: 如果用户还添加了 子类别椅子 中的产品,则减去 的总价来自 子类别桌子 产品的子类别椅子 产品。同样在这种情况下,如果价格 < 0,则将价格设置为 0。
有谁知道我如何使用标准的 Wordpress Woocommerce 来做到这一点?
有可能做到这一点,根据您的子类别要求和计算在购物车中添加折扣…
代码:
add_action( 'woocommerce_cart_calculate_fees','table_chairs_cart_discount', 10, 1 );
function table_chairs_cart_discount($cart_object) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Initializing variables
$chairs_total = 0;
$table_total = 0;
$discount = 0;
// Iterating through each cart item
foreach($cart_object->get_cart() as $item_key => $item):
$item_line_total = $item["line_total"]; // Item total price (price x quantity)
// Chairs subcategory items
if(has_term('chairs', 'product_cat', $item['product_id']))
$chairs_total += $item_line_total;
// Table subcategory items
if(has_term('table', 'product_cat', $item['product_id']))
$table_total += $item_line_total;
endforeach;
// ## CALCULATIONS ##
if( $table_total <= $chairs_total && $chairs_total > 0 )
$discount -= $table_total;
elseif ($chairs_total > 0)
$discount -= $chairs_total;
// Adding the discount
if ($discount != 0)
$cart_object->add_fee( __( 'Chairs discount', 'woocommerce' ), $discount, false );
// Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false)
}
代码进入您的活动子主题(或主题)的 function.php 文件。或者在任何插件 php 文件中。
相关回答: