2016-11-03 3 views
0

У меня есть несколько пакетов еды для продажи. Например. Куриная мука имеет варианты: 10 пачек, 14 пачек, 18 пачек. Я хочу отключить flat_rate: 3, когда люди заказывают 10 пакетов. Но я не знаю, как получить вариацию. Мой код ниже:Как выбрать товар в корзине?

function hide_one_delivery($rates, $item_id) { 
    global $woocommerce, $product; 
    $10_pack = 0; 
    foreach ($woocommerce->cart->cart_contents as $product) { 
     $variation_data = $product->get_variation_attributes(); 
     $variation_detail = woocommerce_get_formatted_variation($variation_data, true); 
     if($variation_detail == "10 pack"){ 
      $10_pack += 1; 
     } 
    } 
    if ($10_pack > 0){ 
     unset($rates['flat_rate:3']); 
    } 
    return $rates; 
} 
add_filter('woocommerce_package_rates', 'hide_one_delivery', 100); 

Это не работает. Может ли кто-нибудь помочь?

ответ

1

Просто загляните в массив продуктов, и вы можете получить данные о вариации из массива продуктов.

function hide_one_delivery($rates, $item_id) { 
    global $woocommerce; 

    foreach ($woocommerce->cart->cart_contents as $product) { 
     //$product is a array, and 10-pack is the slug of the attribute name 
     if ($product['variation_id'] && in_array('10-pack', $product['variation'])) { 

      unset($rates['flat_rate:3']); 
      break; 

     } 

    } 

    return $rates; 
} 
add_filter('woocommerce_package_rates', 'hide_one_delivery', 100, 2); 
Смежные вопросы