定制Woocommerce产品重量从尺寸计算

时间:2017-10-16 10:45:42

标签: php wordpress woocommerce attributes product

在我的woocommerce商店添加产品时,我设定了重量(以kg为单位)和尺寸(以cm为单位)。如果[(高度x长度x宽度)/ 5000]高于实际重量,那么我希望这用于计算运费。

我以为我可以使用过滤器操纵$ weight但没有成功。这是我的代码:

function woocommerce_product_get_weight_from_dimensions( $weight ) {
    global $product;
    $product = wc_get_product( id );
    $prlength = $product->get_length();
    $prwidth = $product->get_width();
    $prheight = $product->get_height();
    $dimensions = $prlength * $prwidth * $prheight;
    $dweight = $dimensions / 5000;
    if ($dweight > $weight) {
        return $dweight;
    }
    return $weight;
}
add_filter('woocommerce_product_get_weight', 'woocommerce_product_get_weight_from_dimensions');

我做错了什么?

1 个答案:

答案 0 :(得分:3)

$product = wc_get_product( id );出现错误,因为id应该是定义的变量,而不是$id

此外,WC_Product对象已经是钩子函数中缺少的可用参数。

最后,我重新审视了您的代码,使其更加紧凑:

add_filter( 'woocommerce_product_get_weight', 'custom_get_weight_from_dimensions', 10, 2 );
function custom_get_weight_from_dimensions( $weight, $product ) {
    $dim_weight = $product->get_length() * $product->get_width() * $product->get_height() / 5000;
    return $dim_weight > $weight ? $dim_weight : $weight;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

此代码经过测试并有效。