Zwiększ koszt wysyłki co kilka sztuk

Dzisiaj kolejne nietypowe zlecenie od klienta. Oczywiście jak to zwykle bywa kwestia dotyczy kilku produktów z kilkudziesięciu. I prawdopodobnie takie zamówienie wpadnie raz na rok, ale to przecież bardzo ważne. Otóż koszt wysyłek od 1 do 6 produktów ma wynosić 20 zł. I ma zwiększać się o kolejne 20 zł po dodaniu kolejnych 1 do 6 sztuk. Czyli dla 7-12 sztuk w koszyku ma być już 40 zł.

Oczywiście nie ma najmniejszego problemu gdy cena wysyłki jest ustalona dla jednego produktu. Wtedy w płaskiej stawce stosujemy cena*[qty] i po zbawie.

Tutaj sytuacja jest nieco bardziej skomplikowana i posłużymy się filtrem woocommerce_shipping_rate_cost.

<?php 
function gc_mnozymy_koszt_wysylki( $cost, $method ) {


	// zmian dokonujemy dla wybranych metod wysyłki pobierając ich instance_id
	if ( in_array( $method->get_instance_id(), array( 22, 23 ) ) && WC()->cart ) {

		$cart_item_count = WC()->cart->get_cart_contents_count();

		// dzielimy liczbę produktów w koszyku przez 6 
		// a następnie zaokrąglamy do liczby całkowitej co wygeneruje nam odpowiedni mnożnik 1, 2, 3 
		if ( $cart_item_count > 1 ) {
			$cost = round( $cart_item_count / 6 ) * $cost;
		}
	}
	return $cost;
}
add_filter( 'woocommerce_shipping_rate_cost', 'gc_mnozymy_koszt_wysylki', 10, 2 );
?>
Przewijanie do góry