Php 根据WooCommerce中的购物车项目计数动态设置发货方式标签

Php 根据WooCommerce中的购物车项目计数动态设置发货方式标签,php,wordpress,woocommerce,cart,shipping-method,Php,Wordpress,Woocommerce,Cart,Shipping Method,在我的woocommerce购物车中,运费仍然由下面的代码正确计算。但是运输标签现在没有更新。我找不到原因;可能是最近的woocommerce 3.7更新吗?谢谢你的帮助 /** * Add different price for shipping based on products quantity */ function mx_shop_shipping_price( $rates, $package ) { //Shipping Mode 1 if ( WC()->

在我的woocommerce购物车中,运费仍然由下面的代码正确计算。但是运输标签现在没有更新。我找不到原因;可能是最近的woocommerce 3.7更新吗?谢谢你的帮助

/**
 * Add different price for shipping based on products quantity
 */
function mx_shop_shipping_price( $rates, $package ) {
    //Shipping Mode 1
    if ( WC()->cart->cart_contents_count < 4 ) {
        return array_filter($rates, function (WC_Shipping_Rate $rate) {
            return $rate->get_label() === 'Shipping Mode 1'; // Shipping Mode 1
        });
    }
    //Shipping Mode 2
    if ( WC()->cart->cart_contents_count < 13 ) {
        return array_filter($rates, function (WC_Shipping_Rate $rate) {
            return $rate->get_label() === 'Shipping Mode 2';
        });
    }
    //Shipping Mode 3
    return array_filter($rates, function (WC_Shipping_Rate $rate) {
        return $rate->get_label() === 'Shipping Mode 3';
    });     
}
add_filter( 'woocommerce_package_rates', 'mx_shop_shipping_price', 10, 2 );

/** End
/**
*根据产品数量添加不同的发货价格
*/
功能mx_商店_运输_价格($rates,$package){
//运输方式1
如果(WC()->购物车->购物车内容计数<4){
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
return$rate->get_label()=='Shipping Mode 1';//Shipping Mode 1
});
}
//运输方式2
如果(WC()->购物车->购物车内容计数<13){
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
return$rate->get_label()=='Shipping Mode 2';
});
}
//运输方式3
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
return$rate->get_label()=='Shipping Mode 3';
});     
}
添加过滤器(“woocommerce\u package\u rates”、“mx\u shop\u shipping\u price”,10,2);
/**结束

您使用的是比较运算符“==”而不是赋值运算符。以下是您可以尝试的更新代码:

function mx_shop_shipping_price( $rates, $package ) {
    //Shipping Mode 1
    if ( WC()->cart->cart_contents_count < 4 ) {
        return array_filter($rates, function (WC_Shipping_Rate $rate) {
            return  $rates[$rate_key]->label = __( 'Shipping Mode 1', 'woocommerce' ); // Shipping Mode 1
        });
    }
    //Shipping Mode 2
    if ( WC()->cart->cart_contents_count < 13 ) {
        return array_filter($rates, function (WC_Shipping_Rate $rate) {
            return $rates[$rate_key]->label = __( 'Shipping Mode 2', 'woocommerce' );
        });
    }
    //Shipping Mode 3
    return array_filter($rates, function (WC_Shipping_Rate $rate) {
        return $rates[$rate_key]->label = __( 'Shipping Mode 3', 'woocommerce' );;
    });     
}
add_filter( 'woocommerce_package_rates', 'mx_shop_shipping_price', 10, 2 );
function mx\u shop\u shipping\u价格($rates,$package){
//运输方式1
如果(WC()->购物车->购物车内容计数<4){
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
返回$rates[$rate_key]->label=uuuuu('Shipping Mode 1','woocommerce');//Shipping Mode 1
});
}
//运输方式2
如果(WC()->购物车->购物车内容计数<13){
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
返回$rates[$rate_key]->label=uuu('Shipping Mode 2','woocommerce');
});
}
//运输方式3
返回数组\过滤器($rates,function)(WC\ U Shipping\ U Rate$Rate){
返回$rates[$rate_key]->label=uuu('Shipping Mode 3','woocommerce');;
});     
}
添加过滤器(“woocommerce\u package\u rates”、“mx\u shop\u shipping\u price”,10,2);
您应该需要刷新发货缓存:

1) 首先,此代码已保存在function.php文件中

2) 在配送设置中,输入配送区域并禁用配送 运输方式和“保存”

然后重新启用该装运方法并“保存”。你完了


您可以找到已给出的此类要求的答案

我的代码设置运费!比较运算符用于返回与标签“装运模式n”匹配的费率。在标签自动更新之前。请提供一些关于答案的反馈。