2017-07-28 50 views
1

我正在使用Woocommerce,並且我想限制航運班'酗酒者',並且只允許它僅用於意大利和其他國家,您是否可以幫助我使用此代碼?非常感謝您的幫助!限制WooCommerce中只有一個國家的航運班

function($is_available) { 

$cart_items = WC()->cart->get_cart(); 

foreach ($cart_items as $cart_item) { 

    $product = $cart_item['data']; 
    $class = $product->get_shipping_class(); 

    if ($class === 'alcoholics') { 
     return false; 
    } 
} 

return $is_available; 
} 

add_filter('woocommerce_states', 'AL_woocommerce_states'); 


function AL_woocommerce_states($states) { 


    $states['IT'] = array(
    'AG' => __('Agrigento', 'woocommerce'), 
    'AL' => __('Alessandria', 'woocommerce'), 
    'AN' => __('Ancona', 'woocommerce'), 
    'AO' => __('Aosta', 'woocommerce'), 
    'AR' => __('Arezzo', 'woocommerce'), 
    'AP' => __('Ascoli Piceno', 'woocommerce'), 
    'AT' => __('Asti', 'woocommerce'), 
    'AV' => __('Avellino', 'woocommerce'), 
    'BA' => __('Bari', 'woocommerce'), 
    'BT' => __('Barletta-Andria-Trani', 'woocommerce'), 
    'BL' => __('Belluno', 'woocommerce'), 
    'BN' => __('Benevento', 'woocommerce'), 
    'BG' => __('Bergamo', 'woocommerce'), 
    'BI' => __('Biella', 'woocommerce'), 
    'BO' => __('Bologna', 'woocommerce'), 
    ); 

    return $states; 
} 

感謝

回答

1

你不能限制航運類本身。國家限制是由女船員的女僕,你可以爲他們每個人設置特定的運輸方式。航運類別允許在每個「統一費率」運輸方法中操縱費率。

最後,您可以爲產品(或產品差異)設置裝運等級,這將允許您爲所選產品設定自定義裝運方式費率。

add_filter('woocommerce_package_rates', 'manipulating_shipping_flat_rates', 10, 2); 
function custom_delivery_flat_rate_cost_calculation($rates, $package) 
{ 
    // Initializing variables 
    $has_products = false; 
    $has_cat = false; 

    // Iterating through all cart items 
    foreach(WC()->cart->get_cart() as $cart_item): 

     $product_id = $cart_item['product_id']; // product ID 
     $variation_id = $cart_item['variation_id']; // variation ID 

     // Detecting a targeted product category 
     if(has_term('clothing', 'product_cat', $product_id)) 
      $has_cat = true; 

     // Detecting specific product IDs 
     if (in_array($cart_item['product_id'], array(20, 22, 28, 47, 58))) 
      $has_products = true; 
    endforeach; 


    foreach($rates as $rate_key => $rate_values){ 
     $method_id = $rate_values->method_id; 
     $rate_id = $rate_values->id; 

     // Targetting Flat rate Shipping Method 
     if ('flat_rate' === $rate_values->method_id) { 


      ## 1) UNSETTING RATE IDs 

      // for a product category 
      if ($has_cat) { 
       unset($rates['flat_rate:5']); 
      } 
      // for a product Ids 
      if ($has_products) { 
       unset($rates['flat_rate:14']); 
      } 

      ## 2) Manipulating specif Rates IDs prices 

      // for a product category and a specific rate ID 
      if ($has_cat && 'flat_rate:8' == $rate_id) { 
       $rates[$rate_id]->cost = $rates[$rate_id]->cost * 0.1; 
       $rates[$rate_id]->taxes[1] = $rates[$rate_id]->taxes[1] * 0.1; 
      } 
      // for a product Ids and a specific rate ID 
      if ($has_products && 'flat_rate:11' == $rate_id) { 
       $rates[$rate_id]->cost = $rates[$rate_id]->cost * 0.1; 
       $rates[$rate_id]->taxes[1] = $rates[$rate_id]->taxes[1] * 0.1; 
      } 
     } 
    } 

    return $rates; 
} 

您需要更改代碼中設置自己:

相反,你可以通過使用woocommerce_package_rates過濾鉤子其獨特率ID有條件操縱各運輸方式在運輸區域設置產品類別,產品編號,運費標識和費率成本,以使其滿足您的需求...

代碼發送到您活動的兒童主題(或主題)的function.php文件中,也可以放在任何插件文件中。


相關答案:WooCommerce: update custom fields after checkout validation failure

相關問題