特定の条件で WooCommerce の配送方法を非表示にする方法

公開: 2020-06-15

配送方法は、お客様が商品を購入する際のチェックアウト時に表示されるサービスと料金です。 これは、スムーズな配送体験のために e コマース ストアにとって不可欠なオプションとなります。

WooCommerce は、e コマース ソリューションとして、場所に基づいてさまざまな配送ゾーンに設定できる、送料無料定額料金ローカル ピックアップなどの配送方法も提供します。 たとえば、送料無料オプションは、店舗の場所に近い特定の範囲の郵便番号でのみ利用でき、定額オプションは配送ゾーンの他の部分で利用できます.

Default Shipping Methods
デフォルトの配送方法

場所に基づく配送オプションはプラグインによって簡単に実現できますが、場所が重要な役割を果たさない特定の条件では、店舗の所有者がそれを実現することは非常に困難になります. 条件は次のとおりです。

  1. 注文の重量が特定のポンドまたはキログラムを超える場合、送料無料などの特定の配送方法は利用できません。
  2. 一部の配送方法の利用可能性は、数量または注文全体の価格にも基づいています. たとえば、注文合計が $250 を超える場合は、送料無料の方法のみを利用でき、有料の配送方法は利用できないはずです。

チェックアウト時に配送方法を表示または非表示にする必要がある条件が他にもある可能性がありますが、この投稿では上記の 2 について説明します。WooCommerce ストアでこれを実現するには、コード スニペットを追加するか、配送料のいずれかを使用します。利用可能なプラグイン

コード スニペットの使用

上記の条件 1 の例を見てみましょう。注文の重量が 5 kg を超える場合、送料無料は利用できません。 これを実現するには、現在アクティブなテーマの functions.php ファイルに以下のコードを追加します。

注:これらの変更は現在のテーマの更新で上書きされる可能性があるため、子テーマを作成し、子テーマの functions.php ファイルに必要なコード スニペットを追加することをお勧めします。 または、コード スニペット プラグインを使用してカスタム スニペットを追加することもできます。

 /** 
 ※ご注文重量が10kg以上の場合、送料無料は非表示となります。 
 * 
 * @param array $rates パッケージで見つかった料金の配列。 
 * @return 配列 
 */ 
function ts_hide_free_shipping_for_order_weight( $rates, $package ) { 
    $order_weight = WC()->cart->get_cart_contents_weight(); 
 
    if ( $order_weight > 5 ) { 
        foreach( $rates as $rate_id => $rate_val ) { 
            if ( '送料無料' === $rate_val->get_method_id() ) { 
                unset( $rates[ $rate_id ] );
            } 
        } 
    } 
    $rates を返します。 
} 

add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );

ここでは、カートで計算された料金を変更するためにwoocommerce_package_ratesフィルターが使用されています。 製品がカートに追加されると利用可能になるすべての配送料が含まれています。 そのため、注文重量が 5kg を超える場合、このフィルターから返された配列から、必要な配送方法の設定を解除する必要があります。この場合、この場合は送料無料になります。

製品ページ:

Product with 6kg weight
重さ6kgの商品

配送方法のカートページ:

Free shipping is not available for the product with weight more than 5kg
5kg以上の商品は送料無料対象外です

WooCommerce カートで配送方法を非表示にするもう 1 つの例は、注文合計が $250 を超える場合、チェックアウト時に無料配送のみを許可することです。 これは、functions.php ファイルに以下のコードを追加することで実現できます。

 /**
 * 注文合計が $250 を超える場合、配送料を非表示にします。
 *
 * @param array $rates パッケージで見つかった料金の配列。
 * @return 配列
 */
function ts_hide_shipping_for_order_total( $rates ) {
  $free = 配列();

  $order_total = WC()->cart->get_subtotal();
  
  if( $order_total > 250 ) {
    foreach ( $rates as $rate_id => $rate ) {
      if ( '送料無料' === $rate->get_method_id() ) {
        $free[ $rate_id ] = $rate;
      }
    }
  }
  戻る ! 空 ( $無料 ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );

ここでは、注文の合計が $250 を超える場合、送料無料の方法のみを含む配列がフィルターから返され、それ以外の場合はすべての配送料が返されます。

Hide Shipping Rate when Order total is more than $250
注文合計が $250 を超える場合、配送料を非表示にします

上記の例では、送料無料の方法を参照しているため、使用される方法 ID は free_shipping です。 他の配送​​方法を変更する場合、方法 ID は次のとおりです。

ローカル ピックアップ: local_pickup
フラットレート: flat_rate

get_method_id() 関数は、単一の配送ゾーンの個々の方法ではなく、すべての配送ゾーンの 3 つの方法の方法 ID のみをフェッチするため、チェックアウト時に利用可能なすべての均一料金、ローカル ピックアップ、または無料配送方法を非表示にします。 ただし、特定の配送方法を非表示にする場合は、配送方法 ID とインスタンス ID の組み合わせを使用する必要があります。

たとえば、'flat_rate:3' の場合、3 はデータベース内のゾーンの配送方法ごとに格納されている一意のインスタンス ID です。 配送方法を右クリックして配送方法のインスタンス ID を確認し、ブラウザの開発者ツールで要素を調べることができます。

Instance ID

配送方法に異なる WooCommerce 拡張機能を使用する

さまざまな条件の配送方法を設定するために、複数の有料または無料の拡張機能を利用できます。 最もよく使用されるプラグインの一部は次のとおりです。

有料プラグイン:

  1. テーブルレート配送 by WooCommerce : このプラグインは、WooCommerce のデフォルトの配送オプションを拡張して、高度にカスタマイズ可能な配送オプションを提供します。
  2. WooCommerce 用の高度な定額配送プラグイン: このプラグインは、高度な配送ルールに基づいてストアの配送料を設定するのに役立ちます。
  3. WooCommerce Advance Shipping plugin by Jeroen sormani : このプラグインを使用すると、設定されたルールに基づいて、チェックアウト時に配送方法を有効にすることができます。 ルールは、さまざまなカートの詳細、製品の詳細、またはさまざまなユーザーの詳細に対して設定できます。
  4. Flexible Shipping Pro for WooCommerce by WP Desk : このプラグインを使用すると、特定の商品、カートの品目、価格または重量のルールに基づいて配送方法を有効にすることができます。

無料プラグイン:

上記のプラグインの一部には、機能が制限された無料バージョンもあります。 彼らです:

  1. WooCommerce Advanced Free Shipping by Jeroen Sormani:これは WooCommerce Advanced Shipping プラグインの無料バージョンです。 両方のプラグインの唯一の違いは、このプラグインは設定されたルールに対して無料の配送方法のみを許可し、有料のプラグインはすべての配送方法を許可することです.
  2. Flexible Shipping for WooCommerce by WP Desk : これは、Flexible Shipping Pro for WooCommerce プラグインの無料バージョンです。 価格と重量のみの配送方法を設定できます。

上記のプラグインの詳細な説明については、この投稿を確認してください。

結論

この投稿で見たように、ウェブサイトにコード スニペットを追加するか、利用可能なさまざまなプラグインを使用するだけで、事前配送オプションを実現できます。 したがって、指定されたコード スニペットを試したり、プラグインを試したりして、これが WooCommerce ストアにとって有益かどうかをお知らせください。