Hey,

Voor een webshop zou ik onderstaande code moeten kunnen gebruiken:
Tussen 1 en 6 items in winkelmandje: 8.7 verpakkingskost
Tussen 7 en 12 items in winkelmandje: 10.59 verpakkingskost
Enz.

Ik heb voorlopig enkel dit: (code waarmee ik vaste kost (€0,10) per item reken)

add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
function add_custom_fees( WC_Cart $cart ){
$fees = 0;

foreach( $cart->get_cart() as $item ){
$fees += $item[ 'quantity' ] * 0.10;
}

if( $fees != 0 ){
$cart->add_fee( 'Verpakkingskosten', $fees);
}
}

Alvast bedankt voor de hulp!

Groetjes,
Cedric
Heel erg bedankt Jan! :D
De verpakkingskosten kloppen nu volgens het aantal bestelde flessen.

Deze verpakkingskosten heeft dus als naam: function add_custom_fees
Kan ik rond deze functienaam gebruiken om deze in een andere if functie te zetten?
Er zijn altijd verpakkingskosten, maar in 2 gevallen (bij afhalen, of bij bedrag boven de €250) valt deze kost weg...
Zoals gezegd, ik ken Woocommerce niet, maar google is your friend.

Het zal ongetwijfeld mogelijk zijn om deze twee gevallen uit de $cart gegevens te halen.
En dan kun je in de functie dit gebruiken in een if om regels 10-13 uit post van 15:21.

Hoe heb je aantal besteld nu bepaald? Met foreach of met cart_contents_count?

Zoals je meegaf in je vorige post: $aantal_items = $aantal_items + $item['quantity'];
Dat gaf het aantal bestelde items weer

Oké, nogmaals bedankt voor alle hulp! :)


[size=xsmall]Toevoeging op 04/06/2016 17:16:06:[/size]

Met deze code is het dus gelukt:

 
add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');
function add_custom_fees( WC_Cart $cart ){
    $fees = 0;
	$aantal_items = 0;

	foreach( $cart->get_cart() as $item ){
	$aantal_items = $aantal_items + $item['quantity'];
	}
	
	if ($aantal_items >= 1 and $aantal_items <= 6) {$fees = 8.7;}
	if ($aantal_items >= 7 and $aantal_items <= 12) {$fees = 10.6;}
	if ($aantal_items >= 13 and $aantal_items <= 18) {$fees = 11.8;}
	if ($aantal_items >= 19 and $aantal_items <= 24) {$fees = 20.5;}
	if ($aantal_items >= 25 and $aantal_items <= 30) {$fees = 22.4;}
	if ($aantal_items >= 31 and $aantal_items <= 36) {$fees = 23.6;}
	if ($aantal_items >= 37 and $aantal_items <= 42) {$fees = 32.3;}
	if ($aantal_items >= 43 and $aantal_items <= 48) {$fees = 34.2;}
	if ($aantal_items >= 49 and $aantal_items <= 54) {$fees = 35.4;}

        $cart->add_fee( 'Verpakkingskosten', $fees);
    }

Reageren