在WordPress中,当购物车重量=0时,如何禁用本地拾取

在WordPress中,当购物车重量=0时,如何禁用本地拾取,wordpress,woocommerce,code-snippets,Wordpress,Woocommerce,Code Snippets,请问我如何根据购物车总重量禁用本地取货?我想在购物车总重量=0时禁用本地取货的可能性。我使用了在别处找到并修改过的这个片段,但它不起作用,而且仍然提供本地拾音器 add_filter( 'woocommerce_package_rates', 'bbloomer_woocommerce_tiered_shipping', 9999, 2 ); function bbloomer_woocommerce_tiered_shipping( $rates, $package ) {

请问我如何根据购物车总重量禁用本地取货?我想在购物车总重量=0时禁用本地取货的可能性。我使用了在别处找到并修改过的这个片段,但它不起作用,而且仍然提供本地拾音器

add_filter( 'woocommerce_package_rates', 'bbloomer_woocommerce_tiered_shipping', 9999, 2 );
    
function bbloomer_woocommerce_tiered_shipping( $rates, $package ) {
     
     if ( WC()->cart->get_cart_contents_weight() == 0 ) {
       
          unset( $rates['local_pickup'] );
          unset( $rates['local_delivery'] );
     
     } 
     return $rates;
    }
请问我做错了什么


实际上,我上面提到的代码正在工作。我没有意识到两件事:

  • 我的本地拾取ID错误,我没有浏览页面以发现正确的变量名是“local\u pickup:13”(代码已更新)

  • 要查看web上的更改,我必须始终在匿名窗口中打开网站。即使是Chrome中的Ctrl+F5、Ctrl+Shift+R也无济于事


  • 您可以通过WC()->cart->cart\u内容循环计算总重量。 试试这个代码

    add_filter( 'woocommerce_package_rates', 'hide_shipping_based_on_weight', 10, 2 );
    function hide_shipping_based_on_weight( $rates, $package ) {
        
        $cart_total_weight = 0;
     
        $shipping_id = 'local_pickup'; // your shipping id
     
        // Calculate cart weight total.
        foreach( WC()->cart->cart_contents as $key => $value ){
            $cart_total_weight += $value['data']->weight * $value['quantity'];
        }
        
        // check cart total
        if( $cart_total_weight <= 0 ){
            unset( $rates[ $shipping_id ] );
        }
     
        return $rates;
    }
    
    add_filter('woocommerce_package_rates','hide_shipping_based_on_weight',10,2);
    功能隐藏基于重量的装运($rates,$package){
    $cart\u总重量=0;
    $shipping\u id='local\u pickup';//您的配送id
    //计算购物车总重量。
    foreach(WC()->cart->cart\u内容为$key=>$value){
    $cart_total_weight+=$value['data']->weight*$value['quantity'];
    }
    //检查购物车总数
    
    如果($cart\u total\u weight哦,非常感谢。事实上,我上面提到的代码正在工作。我没有意识到两件事:1.我的本地拾取ID错误,我没有浏览页面以发现,正确的变量名称是'local\u pickup:13'(代码更新)2.要查看web上的更改,我必须始终在匿名窗口中打开网站。即使Chrome中的Ctrl+F5、Ctrl+Shift+R也没有帮助。一旦有人回答了你的问题,你不应该更改你的问题代码……相反,你可以添加对问题的编辑。