WooCommerce - 根据购物车小计隐藏/显示运输方式

在我的 WooCommerce 商店(使用版本 4.2.2)中,我想隐藏/显示一些基于购物车小计的运输方式,如下所示:

  • 低于 25 欧元:仅显示运输方式 A 和 B,

  • 25 至 49 欧元之间:仅显示运输方式 C 和 D,

  • 50 欧元或以上:仅显示免运费

请注意,运输方式 A、B、C 和 D 均为“统一费率”。

我用谷歌搜索了这个并设法通过以下代码尝试得到这个(我只是用一种速率和一个阈值进行测试)

add_filter( 'woocommerce_package_rates', 'hide_shipping', 10, 2 );

function hide_shipping( $rates, $package ) {

    // Retrieve cart subtotal

    global $woocommerce;

    $cart_subtotal = $woocommerce->cart->get_subtotal();

 

    if( $cart_subtotal > 25 ){

        unset( $rates['flat_rate:7'] );

    }

 

    return $rates;

}

但代码没有任何效果。我哪里错了?


慕神8447489
浏览 103回答 1
1回答

回首忆惘然

请尝试以下操作(在开头的代码中设置您的 5 种运输方式费率 ID)。另外,对于“免费送货”费率,请将“最低订单金额”设置为(零)。0add_filter( 'woocommerce_package_rates', 'hide_specific_shipping_method', 10, 2 );function hide_specific_shipping_method( $rates, $package ) {&nbsp; &nbsp; // Settings: define you shipping rate IDs below&nbsp; &nbsp; $rate_id_1&nbsp; &nbsp; &nbsp;= 'flat_rate:7';&nbsp; &nbsp; $rate_id_2&nbsp; &nbsp; &nbsp;= 'flat_rate:11';&nbsp; &nbsp; $rate_id_3&nbsp; &nbsp; &nbsp;= 'flat_rate:12';&nbsp; &nbsp; $rate_id_4&nbsp; &nbsp; &nbsp;= 'flat_rate:15';&nbsp; &nbsp; $rate_free&nbsp; &nbsp; &nbsp;= 'free_shipping:5';&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; $cart_subtotal = WC()->cart->get_subtotal();&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if ( $cart_subtotal < 25 ) {&nbsp; &nbsp; &nbsp; &nbsp; // Enable only methods 1 et 2&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_3]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_3] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_4]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_4] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_free]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_free] );&nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; elseif ( $cart_subtotal >= 25 && $cart_subtotal < 50 ) {&nbsp; &nbsp; &nbsp; &nbsp; // Enable only methods 3 et 4&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_1]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_1] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_2]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_2] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_free]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_free] );&nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; // Enable only Free shipping&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_1]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_1] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_2]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_2] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_3]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_3] );&nbsp; &nbsp; &nbsp; &nbsp; if ( isset($rates[$rate_id_4]) )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unset( $rates[$rate_id_4] );&nbsp; &nbsp; }&nbsp; &nbsp; return $rates;}代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。重要提示:刷新运输缓存:1)。此代码已保存在您的 function.php 文件中。2)。在运输区域设置中,禁用/保存任何运输方式,然后启用返回/保存。你已经完成了,你可以测试它。
打开App,查看更多内容
随时随地看视频慕课网APP