add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees')

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Cedric De Clercq

Cedric De Clercq

02/06/2016 20:55:13
Quote Anchor link
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
 
PHP hulp

PHP hulp

24/04/2024 04:41:14
 
Stefany Newman

Stefany Newman

03/06/2016 05:25:18
Quote Anchor link
Wat is de probleem?
 
Jan de Laet

Jan de Laet

04/06/2016 11:07:23
Quote Anchor link
@Cedric,
is dit wat?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;}
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 15:21:20
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    }
 
Jan de Laet

Jan de Laet

04/06/2016 16:00:24
Quote Anchor link
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.
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 16:05:00
Quote Anchor link
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
 
Jan de Laet

Jan de Laet

04/06/2016 16:08:13
Quote Anchor link
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.
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 16:14:40
Quote Anchor link
Done.
Nu geeft de verpakkingskost telkens €1, ongeacht het aantal items
 
Jan de Laet

Jan de Laet

04/06/2016 16:16:31
Quote Anchor link
Cedric, wat bedoel je met aantal items.
Stel ik bestel 6 x ASTI SPUMANTE MONTI FURCHI. Is dat 1 item of 6 items?
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 16:21:14
Quote Anchor link
dat zijn 6 items :)
Het totaal aantal flessen dus
 
Jan de Laet

Jan de Laet

04/06/2016 16:27:27
Quote Anchor link
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;
Gewijzigd op 04/06/2016 16:37:29 door Jan de Laet
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 16:55:40
Quote Anchor link
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...
 
Jan de Laet

Jan de Laet

04/06/2016 17:05:07
Quote Anchor link
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?
 
Cedric De Clercq

Cedric De Clercq

04/06/2016 17:10:11
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    }
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.