2016-12-03 13 views
0

ほとんどの商品に配送できるWooCommerceのオンラインショップがあります。一部の製品はローカルピックアップ用です。私はコストがゼロに等しい船積みゾーンでクラスを設定し、そのクラスを製品に割り当てようとしました。しかし、これまでのところ、チェックアウトには依然として送料が表示されます。一部の商品に送料がかからない方法はありますか?woocommerce製品の一部で配送を無効にする方法

答えて

0

プラグインソリューションを検索する場合は、WooCommerce Conditional Shipping and Paymentsを試してください。このプラグインを使用すると、特定の製品または製品カテゴリに制限を加えることができます。

+0

ありがとう、私はそれをチェックしてみます –

0

woocommerce_package_ratesフィルタを調べると、顧客が利用できる配送オプションをフィルタすることができます。

<?php 
// add this snippet to functions.php: 
add_filter('woocommerce_package_rates', function ($rates, $package) { 
    // examine $package for products. this could be a whitelist of specific 
    // products that you wish to be treated in a special manner... 
    $special_ids    = array(1, 2, 3, 4, 5); 
    $special_product_present = false; 
    foreach ($package['contents'] as $line_item) { 
     if (in_array($line_item['product_id'], $special_ids)) { 
      $special_product_present = true; 
     } 
    } 

    $rates = array_filter($rates, function ($r) use ($special_product_present) { 
     // do some logic here to return true (for rates that you wish to be displayed), or false. 
     // example: only allow shipping methods that start with "local" 
     if ($special_product_present) { 
      return preg_match('/^local/', strtolower($r->label)); 
     } else { 
      return true; 
     } 
    }); 

    return $rates; 
}, 10, 2); 

このblog post hereは、ショッピングカートの値が、お客様の国、カート内のアイテムの数に基づいて有効なレートをカスタマイズする方法を含めて、このフックを使用して、そのアイデアのいくつかのバリエーションを示し、:の例では、このようなものになるだろうここにソースコードがあります:https://github.com/woocommerce/woocommerce/blob/v2.2.3/includes/class-wc-shipping.php#L366

+0

ありがとう、私はあなたの提案を検討します。 –

関連する問題