In bepaalde situaties zou het handig zijn dat WooCommerce bestellingen automatisch op afgerond zet nadat er betaald is.
Standaard doet WooCommerce dit alleen bij virtuele-downloadbare producten, maar alle andere bestellingen moet je zelf handmatig afronden.
In dit artikel zal ik uitleggen hoe je ervoor kunt zorgen dat de order status in WooCommerce automatisch op afgerond gezet kan worden.
Waarom een bestelling automatisch afronden?
Alle order statussen in WooCommerce zijn er natuurlijk niet voor niks. De reden dat een bestelling standaard op in behandeling komt te staan na de betaling, is omdat er vaak een proces volgt. Zo moet je waarschijnlijk de producten opsturen naar de klant en zodra je dit gedaan hebt kun je de bestelling op afgerond zetten.
Het kan alleen ook zijn dat je via WooCommerce diensten of digitale lidmaatschappen verkoopt. In dit geval is het niet altijd noodzakelijk om iets na de betaling te doen, omdat dit bijvoorbeeld automatisch geregeld wordt of er direct gebruik gemaakt kan worden van je diensten.
Er zijn verder natuurlijk nog wel meer situaties te verzinnen waarin het niet noodzakelijk is om de tussenstap te hebben in de order statussen.
Order status automatisch op afgerond zetten
Om ervoor te zorgen dat de order status automatisch op afgerond komt te staan nadat de betaling is voldaan, kun je gebruik maken van een stukje code die je aan het functions.php-bestand van je thema kunt toevoegen. Een andere oplossing is om een plugin te installeren die je de mogelijkheid geeft om dit in te stellen.
Om alle bestellingen in WooCommerce op afgerond te zetten, kun je onderstaande code toevoegen aan het functions.php-bestand van je thema. Het liefst natuurlijk in je child theme, zodat je het niet telkens opnieuw moet doorvoeren.
add_action('woocommerce_payment_complete', 'auto_complete_paid_orders');
function auto_complete_paid_orders($order_id)
{
// Get the order object
$order = wc_get_order($order_id);
// Check if the order is not already completed
if ($order && !$order->has_status('completed')) {
// Update the order status to 'completed'
$order->update_status('completed');
}
}
Order status automatisch afronden met een plugin
Een andere oplossing is de plugin WooCommerce Order Status Control. Het voordeel van deze plugin is dat je zelf niet in de code hoeft te rommelen en je natuurlijk net wat meer mogelijkheden hebt.
Zo kun je alle betaalde bestellingen die alleen virtuele producten bevatten automatisch op afgerond laten zetten of je kunt ervoor kiezen dat alle betaalde bestellingen automatisch op afgerond komen te staan. Verder kun je ook nog zorgen dat juist geen enkele bestelling automatisch op afgerond komt te staan.
Wanneer je de plugin hebt geïnstalleerd en geactiveerd kun je de instellingen vinden door naar “WooCommerce -> Instellingen -> Algemeen” te gaan.

Naast “Orders to Autocomplete” kun je aangeven of je geen, alle bestellingen, alleen virtuele bestellingen of alleen virtuele-downloadbare bestellingen (zo gaat het standaard al) automatisch op afgerond wilt zetten. Zodra je hier een keuze hebt gemaakt en het hebt opgeslagen, zal het vanaf dat moment ingaan.
25 reacties op “WooCommerce order status automatisch afronden”
Altijd weer vind ik bij jou de oplossing. Gewoon eng 🙂
dank je wel.
Misschien een domme vraag, maar klopt het dat ik de code nergens zie staan?
De code staat er gewoon, dit wordt ingeladen via Github. Wellicht dat je iets blokkeert met je browser?
Beste Webtalis,
Ik heb de code zoals beschreven in Functions.php gezet alleen mijn site ligt er nu uit. Mijn hosting krijgt mijn site ook niet voor elkaar.. Dit is ontzettend balen. Ik wil heel graag dat mijn website weer up and running is!
Kunnen jullie mij helpen?
Dank.
Groet,
Jill
Dan staat het waarschijnlijk niet helemaal op de juiste plek of tussen iets anders. Je kunt de code uit het bestand halen en dan zal alles gewoon weer werken.
Je kunt er ook een snippet van maken. Zie url voor meer info: https://webtalis.nl/wordpress-code-snippets/
Ik ben net van psp veranderd (naar Rabo Omnikassa) en nu nog bezig in testomgeving. Bij betaling via Ideal/creditcard ontvangt de klant geen e-mail ter bevestiging van de bestelling (er verschijnt wel een scherm op de webshop met bevestiging, maar een mail erbij ontvangen, vind ik zelf altijd wel prettig). Webshop in Woocommerce. Het rare is dat als ik in het orderscherm de bestelling wijzig in “complete” er wel een mail wordt gestuurd. Waar zou het fout gaan? Overigens is “processing order” aangevinkt.
Zal met de mailserver instellingen te maken hebben. Zie ook het artikel WordPress SMTP.
Hoi, ik heb de plugin geinstalleerd maar hij komt niet onder WooCommerce -> Instellingen -> Algemeen te staan? Heb jij een idee hoe dat kan?
De laatste keer dat ik bij een klant keek met deze plugin stond het nog altijd daar. Een andere methode die je kunt gebruiken is om op “Configure” klikken via het plugin overzicht, dan hoor je op de locatie te komen van de instellingen.
Snap niet precies wat je daarmee bedoelt?
Ik kan het helaas niet duidelijker uitleggen dan ik het gedaan heb. In het plugin overzicht hoor je de plugin te hebben staan en hier staat ook een link “configure”, zodat je direct bij de instellingen komt. Is dit bij jou niet het geval, dan zal je het over een andere plugin hebben.
Het is zeker duidelijk uitgelegd. Maar waarschijnlijk komt het omdat het een betaalde plugin is, zie ik nu. Weet jij of er nog een alternatief voor is?
Hoi,
Ik heb een ebook aan mijn webshop toegevoegd. Zowel virtueel als downloadable zijn aangevinkt evenals de url waar het product te downloaden is. De bestellingen worden wel automatisch afgerond, alleen komt er zowel geen bevestiging bij mij binnen als niet bij de klant, met een downloadlink. Bij fysieke producten werkt het wel, maar zodra het ebook wordt toegevoegd dan verschijnen er geen bevestigingen. Heb jij enig idee waar dat aan kan liggen?
Nee, ik zou eerst kijken of er wel mails verzonden worden met een mail logger. Als er wel mails verzonden worden vervolgens controleren waar het fout gaat.
Standaard is dit niet mogelijk en voor zover ik weet zijn hier ook niet echt specifiek plugins voor. Wat je wel zou kunnen doen, is de pre-order plugin gebruiken. Mensen kunnen dan een product reserveren die op een later moment “uitkomt”. Vermoedelijk niet de beste oplossing, maar dit is het enige wat ik op dit moment kan bedenken.
Hoe zet ik een product op gereserveerd of op on hold zodat de klant bepaalde bedenktijd krijgt van mij?
ik heb wordpress, woocommerce
Is het ook mogelijk om afhankelijk van de betaalmethode een order automatisch op afgerond te zetten?
Met een aanpassing aan de code is dit ongetwijfeld mogelijk.
Zou je een voorbeeld kunnen geven hoe dit met betaling+ via paypal zou gaan?
Zie hiervoor iets als dit: https://stackoverflow.com/questions/35686707/woocommerce-auto-complete-paid-orders
Is het mogelijk om alle bestellingen automatisch in de wacht te zetten? Dit zou namelijk makkelijker werken voor de leerlingen (zeer slechtziend) die de bestellingen in behandeling nemen.
Alvast bedankt!
Ja, dit zou wel mogelijk moeten zijn. Als je in de code uit dit artikel ‘completed’ wijzigt in ‘on-hold’ werkt het vermoedelijk al. Wel even testen, dit heb ik niet gedaan. 🙂
Bedankt voor deze info, toch nog een kleine vraag over de snippet code:
In plaats van ALLE orders op autocomplete te zetten, zouden we dit alleen willen doen voor orders waarbij de betaling direct is. Dus WEL bij betaalmethoden zoals iDeal, PayPal en Credit Card maar NIET bij betaling op factuur (BACS).
We maken gebruik van Mollie, maar helaas heeft die deze functie niet ingebouwd.
Weet je hier misschien ook de code voor? Zo kunnen we ‘yet another plugin’ vermijden.
Alvast bedankt!
Die heb ik niet direct klaarliggen. Je zou wel de code uit het artikel kunnen gebruiken als startpunt en hier vervolgens doorgaan om te specificeren voor welke betalingsmethodes het wel en niet kan.