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 );
?>