Пользовательский расчет веса товаров Woocommerce по размерам

При добавлении товаров в мой интернет-магазин я устанавливаю вес (в кг) и размеры (в см). Если [(Высота x Длина x Ширина) / 5000] больше, чем фактический вес, тогда я хочу использовать это для расчета доставки.

Я думал, что смогу использовать фильтр для манипулирования весом $, но безуспешно. Вот мой код:

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

Решение

Ошибка с $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 вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код протестирован и работает.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]