Расчет стоимости доставки по весу без плагинов

В этом уроке мы создадим с вами метод доставки «Единая ставка» и настроим его так, чтобы его цена рассчитывалась в зависимости от веса товаров в корзине.

Также у меня на сайте есть видеокурс по WooCommerce, в котором мы создаём тему для интернет-магазина с нуля, на основе готового HTML, вот ссылка.

Шаг 1. Создание метода доставки в админке «Единая ставка»

Стоимость доставки по весу товаров в корзине
Переходим в WooCommerce > Настройки, вкладка Доставка, выбираем там нужную зону и создаём метод доставки «Единая ставка», с любой стоимостью.

Шаг 2. Настраиваем формулу расчёта в сниппете кода

Код как обычно вставляем либо в functions.php текущей темы (предпочтительнее дочерней), либо в свой плагин.

add_filter( 'woocommerce_package_rates', 'truemisha_shipping_by_weight', 25, 2 );
 
function truemisha_shipping_by_weight( $rates, $package ) {
 
	// вес товаров в корзине
	$cart_weight = WC()->cart->cart_contents_weight;
 
	// ID метода доставки
	$method_id = 'flat_rate:84';
 
	if ( isset( $rates[ $method_id ] ) ) {
		// тут должна быть ваша собственная формула, моя это:
		// стоимость доставки = 5 * вес товаров в корзине
		$rates[ $method_id ]->cost = 5 * round ( $cart_weight );
	}
 
	return $rates;
 
}
  • Думаю не нужно лишний раз упоминать, что в настройках товаров у вас должен быть указан вес.
  • Откуда взять значение $method_id ? Понятно, что это ID конкретно вашего метода доставки, который мы создали в первом шаге. О том, как его узнать, я уже рассказывал тут.
  • Также вы можете применить это ко всем существующим методам доставки внутри этого же кода, при помощи цикла foreach( $rates as ....

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал