2016-11-03 43 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); 
相关问题