WooCommerce is een populair e-commerceplatform dat miljoenen online winkels over de hele wereld ondersteunt. Een van de kernfuncties van WooCommerce is de mogelijkheid om bestellingen te beheren. Standaard wordt WooCommerce geleverd met verschillende bestelstatussen, zoals in behandeling, verwerkt, voltooid en geannuleerd. Het kan echter voorkomen dat u aangepaste bestelstatussen moet maken of de bestelstatus programmatisch moet wijzigen. In deze blogpost laten we u zien hoe u de WooCommerce-bestelstatus programmatisch kunt wijzigen en geven we enkele voorbeelden van de praktische toepassingen ervan.
Voordat we aan de slag gaan, is het essentieel om te begrijpen hoe bestelstatussen werken in WooCommerce. Wanneer een klant een bestelling plaatst, krijgt deze de standaardstatus ‘in behandeling’. U kunt deze status handmatig wijzigen naar “in behandeling” wanneer u begint met het uitvoeren van de bestelling. Zodra de bestelling is voltooid, kunt u de status wijzigen in ‘voltooid’. Als een bestelling wordt geannuleerd, wordt de status gewijzigd in ‘geannuleerd’.
Stel nu dat u een aangepaste bestelstatus moet maken met de naam 'in de wacht'. U kunt dit doen door de volgende code toe te voegen aan uw function.php-bestand:
"`php
functie register_custom_order_status() {
register_post_status('wc-in-wacht', array(
'label' => 'In de wacht',
'openbaar' => waar,
'exclude_from_search' => false,
'show_in_admin_all_list' => waar,
'show_in_admin_status_list' => waar,
'label_count' => _n_noop( 'In de wacht (%s) ', 'In de wacht (%s) ' )
));
}
add_action('init', 'register_custom_order_status');
''
U kunt vervolgens de volgende code gebruiken om de bestelstatus programmatisch te wijzigen in 'in de wacht':
"`php
$bestelling = wc_get_order( $bestelling_id);
$order->update_status('in de wacht', __('Bestelling in de wacht', 'woocommerce' ) );
''
Deze code haalt het orderobject op met behulp van de variabele $order_id en werkt de status ervan bij naar 'in de wacht'.
Laten we nu eens kijken naar een praktische toepassing van deze code. Stel dat u een online winkel heeft die een abonnementsservice aanbiedt. U wilt een aangepaste bestelstatus met de naam 'verlopen' maken die aan bestellingen wordt toegewezen wanneer hun abonnementsperiode afloopt. U kunt de volgende code gebruiken om dit te bereiken:
"`php
functie change_order_status_on_subscription_expiry( $abonnement ) {
$order_id = $abonnement->get_parent_id();
$bestelling = wc_get_order( $bestelling_id);
$order->update_status('verlopen', __('Abonnement verlopen', 'woocommerce' ) );
}
add_action('woocommerce_subscription_end_of_prepaid_term', 'change_order_status_on_subscription_expiry');
''
Deze code luistert naar de gebeurtenis ‘woocommerce_subscription_end_of_prepaid_term’, die wordt geactiveerd wanneer een abonnementsperiode afloopt. Vervolgens wordt de ID van de bovenliggende bestelling opgehaald en wordt de status ervan bijgewerkt naar 'verlopen'.
Conclusie
Het programmatisch wijzigen van de WooCommerce-bestelstatus kan een handige functie zijn voor eigenaren van online winkels die hun orderbeheersysteem willen aanpassen. Met behulp van WordPress-hooks en -filters kunt u aangepaste bestelstatussen maken, wijzigingen in de bestelstatus automatiseren en integreren met services van derden. We hopen dat dit artikel je wat inzichten heeft gegeven over hoe je dit kunt bereiken en je heeft geïnspireerd om meer mogelijkheden met WooCommerce te verkennen.