Как добавить зоны доставки Woocommerce?

Есть интернет-магазин, он работает на woocommerce, по задумке в корзине есть пункт "Доставка", где отображено два метода доставки "Самовывоз", "Курьерская доставка".

По нажатию на "самовывоз", даётся скидка 5% на общею сумму.
По нажатию на "Курьерская доставка", выводится select с зонами доставки (кастомные), при выборе какой либо зоны рассчитывается стоимость доставки (заранее нам известные суммы).

Как реализовать данный функционал? Я что-то уже запутался, то ли создавать вместо стран свои зоны доставки, тогда у них будут разные методы доставки (что не желательно), толи создать зону "Россия", а как тогда сделать так что бы при выборе "Курьерская доставка" выпадал select с зонами доставки и при выборе зоны (района города), автоматически считалась сумма доставки. Есть у кого ответ? Хотя бы намёк на это.. Спасибо!
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
makbori
@makbori Автор вопроса
Wordpress
Скидка на самовывоз реализовал так

function woo_discount_total(WC_Cart $cart) {

	global $woocommerce;

	$delivery_name = "";
	$delivery_selected = [];
	$available_methods = $woocommerce->shipping->get_packages();

	if(isset($woocommerce->session)) {

		$delivery_selected = $woocommerce->session->get("chosen_shipping_methods");

	}

	foreach($available_methods as $method) {
		
		foreach($delivery_selected as $delivery) {
			
			if(isset($method["rates"][$delivery])) {

				$delivery_name = $method["rates"][$delivery]->label;

				break;

			}
		
		}

	}

	if($delivery_name == "Самовывоз") {

		$discount = $cart->subtotal * 0.05; // 0.05 - это 5%

		$cart->add_fee("Фиксированная скидка в 5% за самовывоз ", -$discount);

	}

}

add_action("woocommerce_cart_calculate_fees" , "woo_discount_total");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы