Я думал об использовании вариантов продукта, но я хочу, чтобы пользователь мог добавлять оба количества в корзину одновременно, без добавления первых взрослых и после детей.
Я довольно новичок в программировании, поэтому я точно не знаю лучших практик для достижения того, чего я хочу, но вот что я попробовал до сих пор:
Создано дополнительное поле для получения скидка для детей на странице администрирования продукта. Таким образом, цена для взрослых составит, например, 100 долларов, а дети получат скидку в 10 долларов.
/* create field in product advanced */
function create_child_discount_field() {
$args = array(
'id' => 'child_discount',
'label' => __( 'Discount for children', 'cfwc' ),
'class' => 'custom-field',
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_advanced', 'create_child_discount_field' );
/* save field */
function save_child_discount_field( $post_id ) {
$product = wc_get_product( $post_id );
$title = isset( $_POST['child_discount'] ) ? $_POST['child_discount'] : '';
$product->update_meta_data( 'child_discount', sanitize_text_field( $title ) );
$product->save();
}
add_action( 'woocommerce_process_product_meta', 'save_child_discount_field' );
Созданные поля ввода на странице продукта выглядят так:
add_action( 'woocommerce_before_add_to_cart_button', 'custom_qty_fields', 5 );
function custom_qty_fields(){
echo '<div class="custom-field">
<p>Quantity of adults:</p>
<input type="text" name="qty_adults" value="" title="Qty Adults">
</div>
<div class="custom-field">
<p>Quantity of children:</p>
<input type="text" name="qty_children" value="" title="Qty Children">
</div>';
}
Теперь, когда я не Не знаю, как отправить эти поля количества и вычислить значение, вот что я сделал:
Я скрыл исходное поле количества Woocommerce, используя css (непрозрачность: 0), и использовал jquery для вычисления количества детей + кол-во взрослых, а затем установите результат в поле скрытого количества woocommerce. Допустим, например, что пользователь вводит 5 взрослых и 2 детей, jquery вычислит 5 + 2 и установит 7 в поле стандартного количества woocommerce, поэтому общее количество в корзине будет равно 7.
Тогда я хочу вычислить количество детей, умноженное на поле скидки для детей, установленное в продукте, и установить значение в качестве скидки, используя действие для расчета сборов в корзине:
add_action('woocommerce_cart_calculate_fees' , 'add_discount_for_children');
function add_discount_for_children( WC_Cart $cart ){
$discount = ??? //no clue on how to do that :(
$cart->add_fee( 'Discount for children', -$discount);
}
Я действительно не Я знаю лучшие практики для достижения этой цели, и я, вероятно, делаю это очень плохо, но я надеюсь, что вы, ребята, сможете лучше понять, что я хочу, и укажете мне правильное направление.
Еще раз спасибо!