А вот это кстати будет интересный урок, в нём мы добавим радио-кнопки на страницу оформления заказа и в зависимости от того, какая опция выбрана, будем добавлять соответствующий сбор к общей сумме заказа.
Про страницу оформления заказа у меня на сайте есть отдельный видеоурок, вот ссылка.
Взгляните на скриншот:
Этот код вы можете добавить в functions.php
вашей текущей (или дочерней) темы, либо создать плагин для этого, это легко!
// Добавление радио-кнопок add_action( 'woocommerce_review_order_before_payment', 'truemisha_checkout_options', 25 ); function truemisha_checkout_options() { // сначала получаем объект из сессий $selected = WC()->session->get( 'gift_wrap' ); // если пусто, то ставим значение 0 $selected = empty( $selected ) ? '0' : $selected; // выводим радио-кнопки echo '<div id="truemisha-checkout-radio"><h3>Подарочная упаковка</h3>'; woocommerce_form_field( 'gift_wrap', array( 'type' => 'radio', 'class' => array( 'form-row-wide', 'update_totals_on_change' ), 'options' => array( '0' => 'Обычная', '10' => 'Баркатная (10р)', '1000' => 'Из золота (1000р)', ), ), $selected ); echo '</div>'; } // пересчитываем заказ и добавляем сбор, если нужно add_action( 'woocommerce_cart_calculate_fees', 'truemisha_radio_choice_fee', 25 ); function truemisha_radio_choice_fee( $cart ) { // ничего не делаем в админке и если не AJAX-запрос if ( is_admin() && ! defined( 'DOING_AJAX' ) ) { return; } // получаем данные из сессий $value = WC()->session->get( 'gift_wrap' ); // добавляем соответствующий сбор if ( $value ) { $cart->add_fee( 'Подарочная упаковка', $value ); } } // сохраняем выбор радио-кнопки в сессии add_action( 'woocommerce_checkout_update_order_review', 'truemisha_set_session' ); function truemisha_set_session( $posted_data ) { parse_str( $posted_data, $output ); if ( isset( $output[ 'gift_wrap' ] ) ){ WC()->session->set( 'gift_wrap', $output[ 'gift_wrap' ] ); } }
woocommerce_review_order_before_payment
.type
у функции woocommerce_form_field()
на 17й строчке.update_totals_on_change
на строке 18 – он необходим, иначе сумма заказа не будет автоматически обновляться при выборе вами какой-либо опции.
Мог ли сделать урок купону, чтобы он работал только с товарами без скидки( Но в корзине есть как товары со скидкой, так и без скидки), а минимальная сумма корзины (без скидки) составляла 100 долларов?
Думаю, что да!