Здравствуйте!
У меня в карточке товара есть калькулятор:
add_filter( 'woocommerce_add_cart_item_data', 'custom_add_cart_item_data', 20, 2 );
function custom_add_cart_item_data( $cart_item, $product_id ){
if( isset( $_POST['height_option'] ) )
$cart_item['custom_data']['height'] = sanitize_key( $_POST['height_option'] );
if( isset( $_POST['width_option'] ) )
$cart_item['custom_data']['width'] = sanitize_key( $_POST['width_option'] );
// Make calculation and save calculated price
if( isset( $_POST['height_option'] ) && isset( $_POST['width_option'] ) ){
$height = (int) sanitize_key( $_POST['height_option'] );
$width = (int) sanitize_key( $_POST['width_option'] );
if( $width > 0 && $height > 0 ){
$total_price = ( ( $height / 3 ) * ( $width / 30 ) + 3 ) * $regular_price; // <== The calculation
$cart_item['custom_data']['price'] = round($total_price, 2); // Save the price in the custom data
}
}
return $cart_item;
}
Проблема в том - что в строчке
$total_price = ( ( $height / 3 ) * ( $width / 30 ) + 3 ) * $regular_price;
Стоит видимо не правильный массив базовой цены товара. Из-за этого при добавлении товара цена добавляется с базовой ценой.
Но если подставить вместо
$regular_price
к примеру 1.48, то все работает нормально