Een toeslag voor kleine bestellingen toevoegen in WooCommerce zonder plugin
Voeg met een PHP-fragment een vast bedrag toe wanneer het subtotaal van een WooCommerce-winkelwagen onder een door jou gekozen grens blijft. Hieronder lees je hoe je omgaat met kortingsbonnen, belastingen en het afrekenen.
Laatst bijgewerkt:
Engelstalig origineel op juistheid gecontroleerd door Jesse Nickles
De toeslag voor kleine bestellingen toevoegen
Maak eerst een back-up van je site en test de wijziging in een testomgeving. Voeg de volgende PHP-code toe aan functions.php van je actieve childtheme, of eventueel aan een sitespecifieke plugin. Gebruik je HoverCraft, volg dan de instructies voor childthemes. Bewerk het hoofdthema niet, want een update kan je wijzigingen overschrijven.
add_action( 'woocommerce_cart_calculate_fees', function ( $cart ) {
if ( is_admin() && ! wp_doing_ajax() ) {
return;
}
$minimum = 50.00;
$fee = 5.00;
if ( $cart->get_subtotal() < $minimum ) {
$cart->add_fee( 'Small order fee', $fee, false );
}
} );
Vervang 50.00 door het gewenste minimale subtotaal van artikelen en 5.00 door de toeslag, beide in de valuta van je winkel. In dit voorbeeld wordt een niet-belastbare toeslag toegevoegd wanneer de artikelen vóór korting samen minder dan 50 kosten. Bij een subtotaal van precies 50 wordt geen toeslag berekend.
woocommerce_cart_calculate_fees is een WooCommerce-action hook: tijdens het berekenen van toeslagen voert deze je PHP-callback uit en geeft het winkelwagenobject door als $cart. De add_fee()-methode voegt de toeslag toe aan de berekende totalen. WooCommerce berekent toeslagen opnieuw wanneer de winkelwagen verandert. Voeg de toeslag daarom via deze hook toe in plaats van hem blijvend op te slaan. Zie de hookreferentie voor de argumenten en beperkingen.
Bepalen of kortingsbonnen meetellen voor de ondergrens
Het fragment controleert get_subtotal(), dat de artikelprijzen vóór korting gebruikt. Een winkelwagen met artikelen ter waarde van 55 en een kortingsbon van 10 krijgt bijvoorbeeld geen toeslag, ook al bedraagt het totaal na korting 45.
Wil je de toeslag baseren op het artikelbedrag na toepassing van kortingsbonnen, vervang dan alleen de regel met if door:
if ( $cart->get_cart_contents_total() < $minimum ) {
Beide controles laten verzendkosten en belastingen buiten beschouwing. Gebruik hier niet het eindtotaal: WooCommerce heeft dat nog niet berekend wanneer deze hook wordt uitgevoerd. Bovendien omvat het eindtotaal ook toeslagen, verzendkosten en belastingen.
De belastingbehandeling van de toeslag kiezen
De laatste waarde false in add_fee( 'Small order fee', $fee, false ) markeert de toeslag als niet-belastbaar. Stel dit argument alleen in op true als de toeslag volgens de geldende regels van je winkel belast moet worden, en controleer de juiste belastingklasse. De naam van een toeslag moet ook uniek zijn binnen dezelfde berekening. WooCommerce staat geen negatieve toeslagbedragen toe. Gebruik een normale kortingsmethode als je de prijs wilt verlagen.
WooCommerce ondersteunt toeslagen via deze server-side hook voor zowel de Cart- en Checkout-blokken als de klassieke winkelwagen- en afrekenpagina. De zichtbare indeling verschilt, dus test de toeslag in de versie die je winkel daadwerkelijk gebruikt. De WooCommerce-FAQ over Cart- en Checkout-blokken beschrijft het gebruik van deze action voor winkelwagentoeslagen.
Testen voordat je live gaat
- Plaats artikelen onder de grenswaarde in de winkelwagen. Controleer of de toeslag één keer verschijnt, met de verwachte naam en het juiste bedrag.
- Verhoog het subtotaal van de artikelen eerst tot precies de grenswaarde en daarna tot erboven. Controleer of de toeslag verdwijnt.
- Pas een kortingsbon toe waardoor het bedrag onder de grenswaarde komt. Controleer of het resultaat overeenkomt met je keuze voor het subtotaal vóór of na korting.
- Controleer de winkelwagen en het afrekenen, inclusief de mobiele weergave, verzendkosten, belastingberekening en een wijziging van het aantal artikelen.
Als de toeslag niet verschijnt, controleer dan eerst of de PHP-code wordt geladen en of het subtotaal daadwerkelijk onder de grenswaarde ligt. Verschijnt de toeslag tweemaal, controleer dan of een ander codefragment of een extensie een vergelijkbare toeslag toevoegt.