我正在尝试更新购物车的价格。没有双循环。 当前正在使用:
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item )
和:
$cart_item['data']->set_price( 0 );
我想根据购物车中的物品数量更改每件物品的价格。例如,如果某人添加了5个项目,每个项目的价格为1 $。在第6件商品上,我要将所有商品的价格都更改为.90美分。
目前,我正在执行双循环操作。第一个循环计数所有物品,然后第二个循环根据物品数量设置价格。
答案 0 :(得分:0)
add_action('woocommerce_before_calculate_totals', function() {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Avoiding hook repetition (when using price calculations for example)
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
global $woocommerce;
//echo $woocommerce->cart->get_cart_total();
$count = $woocommerce->cart->cart_contents_count;
if ($count >= 6) {
foreach ( WC()->cart->get_cart() as $item ) {
$item['data']->set_price(0.90);
}
} else {
foreach ( WC()->cart->get_cart() as $item ) {
//$item['data']->set_price(1.00);
$item['data']->set_price( wc_get_price_excluding_tax( $item['data'] ) );
// $item['data']->set_price( wc_get_price_including_tax( $item['data'] ) );
}
}
}, 20, 1);