php 自定义Woocommerce产品重量计算从尺寸只为特定的运输方式

e1xvtsh3  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(102)

我正在尝试建立一种当产品的尺寸重量(宽x高x长)大于重量(实际重量)时的尺寸重量计数方法。
我发现自定义Woocommerce产品重量计算从尺寸答案代码,完美的工作。
然而,我想使它只适用于特定的运输方式。有什么建议或帮助吗?

add_filter( 'woocommerce_product_get_weight', 'custom_get_weight_from_dimensions', 10, 2 );
function custom_get_weight_from_dimensions( $weight, $product ) {
    $chosen_shipping  = WC()->session->get('chosen_shipping_methods')[0]; 

    // How to restrict to specific shipping methods?

    $dim_weight = $product->get_length() * $product->get_width() * $product->get_height() / 5000;
    return $dim_weight > $weight ? $dim_weight : $weight;
}
guykilcj

guykilcj1#

您只能使用以下特定的送货方式 (请参阅最后的“如何取得送货方式费率ID”)

add_filter( 'woocommerce_product_get_weight', 'custom_get_weight_from_dimensions', 10, 2 );
function custom_get_weight_from_dimensions( $weight, $product ) {
    if ( ! is_admin() ) {
        // Here set your targeted shipping method rate Ids
        $targetted_shipping_ids  = array( 'flat_rate:12', 'flat_rate:14' );
        
        // Get chosen shipping method(s)
        $chosen_shipping_methods  = (array) WC()->session->get('chosen_shipping_methods'); 
        $matched_shipping_methods = array_intersect( $chosen_shipping_methods, $targetted_shipping_ids );
        
        if( ! empty($matched_shipping_methods) ) {
            $dim_weight = $product->get_length() * $product->get_width() * $product->get_height() / 5000;
        }
    }

    return isset($dim_weight) && $dim_weight > $weight ? $dim_weight : $weight;
}

代码进入活动子主题(或活动主题)的functions.php文件。测试并工作。

如何取得运送方式费率ID:

要获取相关的发运方法费率ID(如**flat_rate:12),请使用浏览器代码检查器检查每个相关的单选按钮属性value**,如:

相关问题