web-dev-qa-db-ja.com

特定の商品によるWoo Commerceでの無料配送の有効化

特定の商品(または特定のカテゴリ/配送クラスの商品)がカートに含まれている場合にのみ、Woo Commerceで無料配送を有効にできるかどうかを知りたいです。

送料無料オプションはカートの値に基づいて、またはクーポンコードによってのみ有効になるので、私は均一料金の出荷を調査し、それがより安いものよりも最も高価な出荷クラスを優先することを発見しました。これは私が作成した送料無料クラスがデフォルトの料金を上書きすることは決してないことを意味します。

私はこの背後にある論理を理解していますが、それは私が必要としていることとは反対です。

私が達成しようとしていることがWoo Commerce内では不可能なのかどうかはわかりません。特定の商品/カテゴリにのみ適用されるクーポンが私が得ることができる最も近いように思えますが、私はむしろチェックアウト時にコードを入力することをユーザーに強制したくありません。

特定の製品を購入するユーザーに無料配送を提供するためのより簡単な方法があるかどうか、誰かが知っていますか?

8
James O'Neill

多分これはあなたの質問に完全には答えない、しかしテーブルレートシッピングプラグインはあなたに特定のレートに優先順位を設定するオプションを与える。さらに、 この議論 で解決策を探すことができる場所について多くのヒントが得られます。

1
Ewout

特定の製品を購入するユーザーに無料配送を提供するためのより簡単な方法があるかどうか、誰かが知っていますか?

実際には、商品を作成するときに商品エディタ内で仮想商品としてマークするだけで、その商品の出荷は完全に除外されます。

5
Nathan

これは、@ EwoutによってリンクされたGitHubの問題に関するディスカッションから別の回答で集めたスニペットです。私はvar_dump()を追加しました、それであなたはコメントを外して、あなたがまさにあなたが取り除きたいものをチェックすることができます。

$available_methodsは、以下のarrayです。

$available_methods as $method_id => $method

より具体的なチェックが必要な場合は$method_idと比較してください。

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Developers!: Dump this to see what you can unset
    # var_dump( $available_methods );

    // remove standard shipping option
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
2
kaiser

私はWooCommerceプラグインを作成しました。これにより、ユーザーは無料配送の詳細設定を構成できます。プラグインでは、送料無料で特定の商品を選択することが可能です。

このプラグインはwordpress.orgで WooCommerce Advanced Free Shipping と呼ばれています。

お役に立てれば。

2
Sormano

「仮想」オプションはすべての送料を削除しますが、顧客の請求先住所とは異なる住所に出荷するオプションも削除します。顧客が他の非仮想製品も購入する場合、これは問題ではありませんが、それが彼らが購入する唯一のものである場合です。

0
user51366

Kaiserのコード(上記)に基づいて、私は以下のコードを作成しました。

    /**
 *  Hide free shipping option when Standard Shipping is available
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // remove standard shipping option
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

そして、WooCommerceを設定する順番で、Woo Shipping OptionsでFree ShippingとFlat Rateの両方が有効になります。それから、配送クラスを設定し、定額オプションページでそのコスト(例:7.95ポンド)を指定して、その配送クラスを7.95ポンドのp&pを請求する製品に追加します。

0