2016-11-03 41 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); 

這是行不通的。可以anyopne請幫忙嗎?

回答

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); 
相關問題