Вам нужно добавить ваши переменные в товар. То есть, в карточке товара у вас должны появиться новые поля, куда вы будете заносить и сохранять значения переменных.
Для этого вам нужно реализовать три "хука" - первый на "display" полей, второй на "save" данных пеhременных, третий - перерасчет цены в корзине.
Подробнее по "кастомным" полям в корзине Woo -
https://woocommerce.github.io/code-reference/files...
1) Пример, как добавить "кастомный" input в товар в "базовой комплектации":
add_action('woocommerce_product_options_general_product_data', 'your_function_for_display_custom_meta_data');
function your_function_for_display_custom_meta_data() {
woocommerce_wp_text_input(
array(
'id' => 'rangeby1',
'placeholder' => 'Текст плейсхолдера',
'label' => 'Текст label'
));
// подобным образом, добавляете все переменные, как инпуты...
}
2) Второй "хук" - для сохранения данных, которые вводятся в поля:
add_action('woocommerce_process_product_meta', 'your_function_for_save_custom_meta_data');
function your_function_for_save_custom_meta_data( $post_id ){
$rangeby1 = $_POST['rangeby1'];
update_post_meta($post_id, 'rangeby1', esc_html($rangeby1));
// подобным образом, добавляете сохранение для всех полей...
}
3) Выводите переменные в корзине:
add_action( 'woocommerce_before_calculate_totals', 'your_function_for_calculate_cart_totals', 10, 1 );
function your_function_for_calculate_cart_totals( $cart ){
// перебор в цикле всех товаров в корзине, примерно так:
foreach ( $cart->get_cart() as $cart_item ) {
// получаете значения переменных:
$rangeby1 = get_post_meta( $cart_item['data']->get_ID(), 'rangeby1', true );
// прописываете логику перерасчета цен... тут уже всё индивидуально...
}
}