2017-12-12 11 views
0

私のWordPress/WooCommerceウェブサイトでは、500 DKK以上のすべてのご注文を無料でお届けします。これは完璧に動作しています。私たちは仮想製品としてギフトカードを作っており、すべての製品をデジタルで送ってきました。問題は何らかの理由で仮想製品がこの500 DKKの無料配送限度に含まれることです。WooCommerce仮想製品を無料配送にカウントすることを除外

私たちがしようとしているのは、すべての仮想製品が無料配送限度にカウントされないようにすることです。

私はこれについてどうやって行くのか分かりません。私たちのウェブサイトは:http://detitalienskekoekken.dk.linux99.unoeuro-server.comです。

設定方法は、さまざまな配信方法を提供するプラグインがあります。これらの方法の1つ(店への納品)は49DKKの費用に設定されていますが、500DKKに達するとこの特別なオプションで無料で配送されます。

私はこのオンラインのコードを見つけることができませんでしたので、これを提供してくれないのは残念です。特定のプラグインの

答えて

1

更新:

add_filter('woocommerce_package_rates', 'custom_free_shipping_option', 15, 2); 
function custom_free_shipping_option($rates, $package){ 

    // HERE set the "minimum order amount" for free shipping 
    $limit = 500; 

    $free_total = 0; 

    // Get the cart content total excluding virtual products 
    foreach(WC()->cart->get_cart() as $cart_item) 
     if(! $cart_item['data']->is_virtual()) 
      $free_total += $cart_item['line_total']; 

    // Set the cost to 0 based on specific cart content total 
    if($free_total > $limit) 
     foreach ($rates as $rate_key => $rate) 
      if('pakkelabels_shipping_gls' === $rate->method_id) 
       $rates[$rate->id]->cost = 0; 

    return $rates; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルやも任意のプラグインファイルになります。

あなたの特定の発送方法で動作するはずです。


オリジナルの答え(古典的な「送料無料」メソッドの)

ここでは、仮想製品を除く配送方法無料配信「最小注文量」オプションを置き換えます必要なコードです:

add_filter('woocommerce_package_rates', 'custom_free_shipping_option', 10, 2); 
function custom_free_shipping_option($rates, $package){ 

    // HERE set the "minimum order amount" for free shipping 
    $limit = 500; 

    $free_total = 0; 

    // Get the cart content total excluding virtual products 
    foreach(WC()->cart->get_cart() as $cart_item) 
     if(! $cart_item['data']->is_virtual()) 
      $free_total += $cart_item['line_total']; 

    // Disabling free shipping method based on specific cart content total 
    if($free_total < $limit) 
     foreach ($rates as $rate_key => $rate) 
      if('free_shipping' == $rate->method_id) 
       unset($rates[ $rate_key ]); 

    return $rates; 
} 

コードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイル、またはすべてのプラグインファイルに入ります。

テストおよび

だからあなたも無料配信設定でこのオプションを削除することができます取り組んでいます。

+0

- 私のせいです。私たちは、WooCommerce無料配送オプションを使用しません。私たちは3種類の配送(店舗、家庭、ビジネス)のプラグインを持っています。 500以上を支払うと、最初のオプションは無料配送になります。これはすでに動作していますが、現在は仮想製品を追加することができます。おそらく上記のコードはそれが関連している特定の配送オプションを使用する必要がありますか? 500以上の支出で無料配送を提供する配送オプションの値/名前は、pakkelabels_shipping_gls1です。どういうわけか、仮想製品をこれに数えないように除外するだけです。 – eMikkelsen

+0

もちろん、私はそうするでしょう、それは多くの人々を助けるでしょう。これで完了です。送信した新しいコードはまだ動作しません。このプラグインで動作させる方法はありますか?それはデンマークの全員の90%がPakkelabelsと呼ばれているので、むしろ便利です。私は、追加のID、価値、必要な情報を提供することができます。 – eMikkelsen

+0

さらに調査した後。あなたのコードはオプションを完全に削除しますが、その部分だけを変更するだけではありません。基本的にそれは次のようなものです:ショップへの配送は49です。あなたが499を支払うと、それは無料です。ここではギフトカードが499にカウントされないようにする必要があります。 – eMikkelsen

関連する問題