add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees')
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
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
Wat is de probleem?
@Cedric,
is dit wat?
is dit wat?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ipv
$fees = 0;
foreach( $cart->get_cart() as $item ){
$fees += $item[ 'quantity' ] * 0.10;
}
// dit
$fees = 0;
$aantal_items = 0;
// misschien kan deze foreach om aantal_items in $cart te bepalen eenvoudiger???
foreach( $cart->get_cart() as $item ){
$aantal_items = $aantal_items +1;
}
if ($aantal_items >= 1 and $aantal_items <= 6) {$fees = 8.7;}
if ($aantal_items >= 7 and $aantal_items <= 12) {$fees = 10.59;}
$fees = 0;
foreach( $cart->get_cart() as $item ){
$fees += $item[ 'quantity' ] * 0.10;
}
// dit
$fees = 0;
$aantal_items = 0;
// misschien kan deze foreach om aantal_items in $cart te bepalen eenvoudiger???
foreach( $cart->get_cart() as $item ){
$aantal_items = $aantal_items +1;
}
if ($aantal_items >= 1 and $aantal_items <= 6) {$fees = 8.7;}
if ($aantal_items >= 7 and $aantal_items <= 12) {$fees = 10.59;}
Momenteel gebruik ik onderstaande code (waarvoor dank Jan de Laet)
Wanneer het totaal aantal items in het winkelmandje tussen de 1 en 6 is, komen hier inderdaad 8,7 euro kosten bij.
Maar wanneer er meer dan 6 items zijn, veranderen deze kosten niet naar 10,59...
Enig idee hoe dit op te lossen is?
Wanneer het totaal aantal items in het winkelmandje tussen de 1 en 6 is, komen hier inderdaad 8,7 euro kosten bij.
Maar wanneer er meer dan 6 items zijn, veranderen deze kosten niet naar 10,59...
Enig idee hoe dit op te lossen is?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
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 +1;
}
if ($aantal_items >= 1 and $aantal_items <= 6) {$fees = 8.7;}
if ($aantal_items >= 7 and $aantal_items <= 12) {$fees = 10.59;}
$cart->add_fee( 'Verpakkingskosten', $fees);
}
function add_custom_fees( WC_Cart $cart ){
$fees = 0;
$aantal_items = 0;
foreach( $cart->get_cart() as $item ){
$aantal_items = $aantal_items +1;
}
if ($aantal_items >= 1 and $aantal_items <= 6) {$fees = 8.7;}
if ($aantal_items >= 7 and $aantal_items <= 12) {$fees = 10.59;}
$cart->add_fee( 'Verpakkingskosten', $fees);
}
Wat was je aantal items?
De regels die ik heb voorgesteld gaan maar tot en met 12 items. Dus als je er meer items hebt dan 12 wordt er geen fees berekend.
Je zult dus regels toe moeten voegen na regel 11.
De regels die ik heb voorgesteld gaan maar tot en met 12 items. Dus als je er meer items hebt dan 12 wordt er geen fees berekend.
Je zult dus regels toe moeten voegen na regel 11.
Ik heb het eens getest met 8 items, maar de kost van 1-6 items verschijnt
Toevoeging op 04/06/2016 16:06:28:
Als je zelf eens wilt testen: www.vinifratelliranft.eu/shop
Toevoeging op 04/06/2016 16:06:28:
Als je zelf eens wilt testen: www.vinifratelliranft.eu/shop
Om te testen voeg dit eens toe na regel 11:
$fees = $aantal_items;
Dan zou je verpakkingskosten gelijk moeten zijn aan het aantal items dat je probeert te tellen.
$fees = $aantal_items;
Dan zou je verpakkingskosten gelijk moeten zijn aan het aantal items dat je probeert te tellen.
Done.
Nu geeft de verpakkingskost telkens €1, ongeacht het aantal items
Nu geeft de verpakkingskost telkens €1, ongeacht het aantal items
Cedric, wat bedoel je met aantal items.
Stel ik bestel 6 x ASTI SPUMANTE MONTI FURCHI. Is dat 1 item of 6 items?
Stel ik bestel 6 x ASTI SPUMANTE MONTI FURCHI. Is dat 1 item of 6 items?
dat zijn 6 items :)
Het totaal aantal flessen dus
Het totaal aantal flessen dus
Dan zul je wat anders moeten doen bij $cart->get_cart() as $item, om te bepalen wat er besteld is.
En dan $aantal_items + 1 vervangen door $aantal_items + $besteld.
Ik ken woocommerce niet, maar snelle google levert $item['quantity'] op, dus dan zou regel 7 worden
$aantal_items = $aantal_items + $item['quantity'];
*** toevoeging ***
Als ik verder google, in plaats van de foreach zou dit ook moeten kunnen:
$aantal_items = $cart->cart_contents_count;
En dan $aantal_items + 1 vervangen door $aantal_items + $besteld.
Ik ken woocommerce niet, maar snelle google levert $item['quantity'] op, dus dan zou regel 7 worden
$aantal_items = $aantal_items + $item['quantity'];
*** toevoeging ***
Als ik verder google, in plaats van de foreach zou dit ook moeten kunnen:
$aantal_items = $cart->cart_contents_count;
Gewijzigd op 04/06/2016 16:37:29 door Jan de Laet
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...
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?
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! :)
Toevoeging op 04/06/2016 17:16:06:
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);
}
Dat gaf het aantal bestelde items weer
Oké, nogmaals bedankt voor alle hulp! :)
Toevoeging op 04/06/2016 17:16:06:
Met deze code is het dus gelukt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}




