duanpiao6679 2017-10-16 10:45
浏览 174
已采纳

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

When adding products to my woocommerce store I set weight (in kg) and dimensions (in cm). If [(Height x Length x Width) / 5000] is higher than actual weight then I want this to be used to calculate shipping.

I thought I could use a filter to manipulate $weight but with no success. Here is my code:

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');

What am i doing wrong?

  • 写回答

1条回答 默认 最新

  • dongwei9365 2017-10-16 11:32
    关注

    There is an error with $product = wc_get_product( id ); as id should be a defined variable like $id instead.

    Also the WC_Product object is already a missing available argument in your hooked function.

    Finally, I have revisited your code making it more compact:

    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;
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    This code is tested and works.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog