2017-10-16 16 views
2

woocommerce 저장소에 제품을 추가 할 때 무게 (kg) 및 크기 (cm)를 설정합니다. [(높이 x 길이 x 너비)/5000]이 실제 무게보다 높으면 운송 계산에이 값을 사용하기를 원합니다.차원에서 사용자 정의 Woocommerce 제품 무게 계산

나는 $ 무게를 조작하기 위해 필터를 사용할 수 있다고 생각했지만 성공하지는 못했습니다. 여기 내 코드 :

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 객체는 hooked 함수에서 이미 누락 된 인수입니다.

마지막으로, 나는 더 컴팩트하게 코드를 재 방문했다 :

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의 활성 자식 테마 (또는 테마)의 파일이나 간다.

이 코드는 테스트되었으며 작동합니다.