WooCommerce er en populær e-handelsplattform som driver millioner av nettbutikker over hele verden. En av kjernefunksjonene til WooCommerce er muligheten til å administrere bestillinger. Som standard kommer WooCommerce med flere ordrestatuser som venter, behandling, fullført og kansellert. Det kan imidlertid være tider når du trenger å opprette egendefinerte ordrestatuser eller endre ordrestatusen programmatisk. I dette blogginnlegget viser vi deg hvordan du endrer WooCommerce-ordrestatusen programmatisk og gir deg noen eksempler på praktiske anvendelser.
Før vi begynner, er det viktig å forstå hvordan ordrestatuser fungerer i WooCommerce. Når en kunde legger inn en bestilling, blir den tildelt standardstatusen «venter». Du kan manuelt endre denne statusen til "behandler" når du begynner å oppfylle bestillingen. Når bestillingen er fullført, kan du endre statusen til «fullført». Hvis en ordre kanselleres, endres statusen til «kansellert».
La oss nå si at du må opprette en egendefinert bestillingsstatus kalt «på vent». Du kan gjøre dette ved å legge til følgende kode i functions.php-filen din:
"php
function register_custom_order_status() {
register_post_status( 'wc-on-hold', array(
'label' => 'På vent',
'public' => sant,
'exclude_from_search' => usant,
'show_in_admin_all_list' => sant,
'show_in_admin_status_list' => sant,
'label_count' => _n_noop( 'På vent (%s) ', 'På vent (%s) ' )
));
}
add_action( 'init', 'register_custom_order_status' );
“
Du kan deretter bruke følgende kode for å endre ordrestatusen til "på vent" programmatisk:
"php
$ordre = wc_get_order( $order_id );
$order->update_status( 'on-hold', __( 'Order on hold', 'woocommerce' ) );
“
Denne koden henter ordreobjektet ved å bruke $order_id-variabelen og oppdaterer statusen til «på vent».
La oss nå se en praktisk anvendelse av denne koden. La oss si at du driver en nettbutikk som tilbyr en abonnementstjeneste. Du vil opprette en egendefinert bestillingsstatus kalt "utløpt" som tilordnes bestillinger når abonnementsperioden deres utløper. Du kan bruke følgende kode for å oppnå dette:
"php
function change_order_status_on_subscription_expiry( $subscription ) {
$order_id = $subscription->get_parent_id();
$ordre = wc_get_order( $order_id );
$order->update_status( 'utløpt', __( 'Abonnementet utløpt', 'woocommerce') );
}
add_action( 'woocommerce_subscription_end_of_prepaid_term', 'change_order_status_on_subscription_expiry');
“
Denne koden lytter etter «woocommerce_subscription_end_of_prepaid_term»-hendelsen, som utløses når en abonnementsperiode avsluttes. Den henter deretter den overordnede ordre-IDen og oppdaterer statusen til "utløpt".
konklusjonen
Å endre WooCommerce-ordrestatus programmatisk kan være en nyttig funksjon for nettbutikkeiere som ønsker å tilpasse ordrestyringssystemet sitt. Ved hjelp av WordPress-kroker og filtre kan du opprette tilpassede ordrestatuser, automatisere ordrestatussendringer og integrere med tredjepartstjenester. Vi håper denne artikkelen har gitt deg litt innsikt i hvordan du oppnår dette og inspirert deg til å utforske flere muligheter med WooCommerce.