Изменение способа доставки woocommerce на основе переключателей
У меня есть набор радиоприемников с доставкой и самовывозом в платежной форме. Мне нужно, чтобы способ доставки изменился с local_pickup на distance_rate_shipping, когда соответствующее радио будет проверено в форме.
Я смог использовать код из Установить способ доставки программно настраиваемые[^] чтобы изменить метод при загрузке. Я также попробовал ajax и уже настроил функцию, которая использует радио для добавления новой платы за туалет, опубликовал этот код ниже.
Что я уже пробовал:
add_action('wp_ajax_woocommerce_apply_collect', 'calculate2', 10); add_action('wp_ajax_nopriv_woocommerce_apply_collect', 'calculate2', 10); function calculate2() { if (isset($_POST['collect'])) { global $woocommerce; $district = $_POST['collect']; $user_role = get_user_role(); if ($district === "Return") { $val = 0; } elseif ($district === "Collect" && $user_role != 'business'){ $val = 250; } session_start(); $_SESSION['val2'] = $val; } } add_action('woocommerce_cart_calculate_fees', 'wpi_add_ship_fee2'); function wpi_add_ship_fee2() { @session_start(); $user_role = get_user_role(); $customshipcost = $_SESSION['val2']; if($customshipcost == 0) { } else { if(get_user_role() == 'business' || get_user_role() == 'administrator') { WC()->cart->add_fee('Collection Fee', 0, true,''); } else { WC()->cart->add_fee('Collection Fee', $customshipcost, true,''); } } }
Я также попытался поместить функцию ajax и код 'WC()->session->set внутри действия 'woocommerce_before_checkout_shipping_form', но не смог использовать эти два подхода для изменения метода доставки.
Спасибо за вашу помощь