根据购物车中的物品更新Woocommerce产品价格

时间:2020-07-03 17:04:57

标签: php wordpress woocommerce

我正在尝试更新购物车的价格。没有双循环。 当前正在使用:

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) 

和:

$cart_item['data']->set_price( 0 );

我想根据购物车中的物品数量更改每件物品的价格。例如,如果某人添加了5个项目,每个项目的价格为1 $。在第6件商品上,我要将所有商品的价格都更改为.90美分。

目前,我正在执行双循环操作。第一个循环计数所有物品,然后第二个循环根据物品数量设置价格。

1 个答案:

答案 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);