С Woocommerce, этот сайт имеет два типа кнопок для продуктов:
- Добавить в корзину и
- Свяжитесь с нами для заказа.
При нажатии на кнопку «Свяжитесь с нами для заказа» посетители перенаправляются на контактную форму на странице «Свяжитесь с нами для заказа». Эта контактная форма построена с плагином Контактная форма 7.
Для некоторых продуктов в контактной форме есть поле с эксклюзивным флажком, в котором они могут выбрать подкладку. Исходя из того, какую подкладку они выбрали, я перенаправляю посетителей на страницу оформления заказа с некоторым значением, переданным через URL.
Например: https://milanshopping.co.uk/checkout/?val=15
И в файле functions.php
я использую следующий код:
add_action( 'woocommerce_cart_calculate_fees','milanshopping_add_lining_fees' );
function milanshopping_add_lining_fees() {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if(isset($_GET['val'])){
if($_GET['val'] == 15){
$leather_fee = 15;
}else{
$leather_fee = 20;
}
}
if($leather_fee != 0 ){
WC()->cart->add_fee( 'Leather fee', $leather_fee);
}
}
Но это не добавляет плату, даже если присутствует значение $_GET
. Я проверил, вызвав echo $_GET['val']
, и значение напечатано.
Но если я добавлю следующий код вне оператора if,
WC()->cart->add_fee( 'Leather fee', $leather_fee);
работает, хотя добавленная плата равна 0, а не те сборы, которые я пытаюсь получить из значения $_GET
. Любая идея?
Перенаправление от контакта к нам на страницу заказа на страницу оформления заказа осуществляется с помощью формы контакта 7 dom «wpcf7submit», и товары добавляются в корзину с помощью отдельной функции.