У меня есть созданное пользовательское поле, которое получает значение и добавляет его в корзину woocommerce
add_action( 'woocommerce_before_add_to_cart_button', 'fabric_length_product_field' );
function fabric_length_product_field() {
global $product;
woocommerce_form_field('track_length', array(
'type' => 'text',
'class' => array('my-field-class form-row-wide'),
'label' => __('Track Length (m)', 'woocommerce'),
'maxlength' => 4,
'required' => true, // or false
),'');
}
В этом поле добавляется поле ввода, это числовое значение.
Итак, моя корзинаoutput
Таким образом, проблема здесь заключается в том, что значения «Длина дорожки (м)» должны быть вычислены до общего
Элемент 1 = 999 $ Длина дорожки (м) = 24 $ / м
Я очень запутался в том, как сделать эту работу
, и этот код я использую для отображения этих значений накорзина
// Change the line total price
add_filter( 'woocommerce_get_discounted_price', 'calculate_discounted_price', 10, 2 );
// Display the line total price
add_filter( 'woocommerce_cart_item_subtotal', 'display_discounted_price', 10, 2 );
function calculate_discounted_price( $price, $values ) {
global $woocommerce;
$items = WC()->cart->get_cart();
$arr_product=array();
foreach($items as $item => $values) {
$tl_val = $values['tlength']['value'] * 24;
}
$price += $tl_val;
return $price;
}
function display_discounted_price( $values, $item ) {
global $woocommerce;
$items = WC()->cart->get_cart();
$arr_product=array();
foreach($items as $gitem => $values) {
$tl_val = $values['tlength']['value'];
$tl_val_computed = $values['tlength']['value'] * 24;
}
return wc_price( $item[ 'line_total' ] ).'<font style="display:block;color:#949494;font-size:12px;">'.$tl_val.'m x $24 = $'.$tl_val_computed.'</font>';
}