2017-10-16 20 views
2

私のwoocommerce店に商品を追加するとき、私は重量(kg)と寸法(cm)を設定しました。 [(高さ×長さ×幅)/ 5000]が実際の重量よりも高い場合は、配送料の計算にこの値を使用します。寸法からのカスタムWoocommerce製品重量の計算

私は$ 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'); 

私は間違っていますか?

答えて

2

idとして$product = wc_get_product(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ファイルになりますか。

このコードはテスト済みであり、動作します。

関連する問題