
🏪 Tilpassede WooCommerce-ordrestatuser: slik oppretter og konfigurerer du
Vi behandlet bestillingen, men det finnes ingen standardstatus for dette stadiet. «Behandler» for montering, «Fullført» for frakt, og et tomrom imellom. Butikken vokser, og de syv standardstatusene i WooCommerce er ikke lenger nok.
Du kan legge til en egendefinert status på to måter: med et par linjer kode i functions.php eller med en ferdigutviklet plugin. Begge tilnærminger fungerer og ødelegger ikke standard ordrelogikk. Nedenfor, steg for steg, med testet kode og et alternativ uten programmering.
💡 Rask oversikt:
- Hvilke statuser som følger med WooCommerce ut av boksen og hvorfor de ikke er nok
- Registrering av en egendefinert status via PHP-kode
- Legge til flere statuser og egendefinerte e-postvarsler
- Plugins for ordrestatuser når kode ikke passer
- Svar på vanlige spørsmål: HPOS, farger, sletting, oversettelse
Hvilke statuser følger med WooCommerce ut av boksen
Som standard leverer WooCommerce syv ordrestatuser. Hver av dem er tett knyttet til et spesifikt punkt i livssyklusen:
Status | Hva den betyr |
|---|---|
Venter på betaling | Ordre opprettet, betaling ikke mottatt |
Behandler | Betaling mottatt, ordre behandles |
Fullført | Ordre utført og lukket |
På vent | Avventer betalingsbekreftelse |
Kansellert | Kansellert av kunde eller administrator |
Refundert | Penger returnert |
Mislyktes | Betaling mislyktes |
For en typisk butikk er dette settet tilstrekkelig. Men så snart tilpasset behandlingslogikk dukker opp, som produksjon på bestilling eller flertrinns levering, er syv statuser ikke lenger nok. Du trenger «Under montering», «Overlevert til frakt», «Avventer forskuddsbetaling» eller «Krever godkjenning av administrator».
Steg 1: registrere en egendefinert status via kode
Før WooCommerce 3.0 brukte statusene taksonomien shop_order_status, og det var ikke trivielt å legge til en ny. Nå er det enklere: en ordrestatus er en poststatus for den egendefinerte posttypen shop_order. Den registreres med én enkelt register_post_status()-funksjon og filteret wc_order_statuses.
Koden legges til i barnetemaets functions.php. Før du gjør endringer, ta en fullstendig sikkerhetskopi av nettstedet.
1 // Registering a new order status 2 function sdstudio_register_custom_order_status() { 3 register_post_status( 'wc-preparing', array( 4 'label' => 'In assembly', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In assembly (%s)', 11 'In assembly (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 } 16 add_action( 'init', 'sdstudio_register_custom_order_status' ); 17 18 // Adding status to WooCommerce list 19 function sdstudio_add_custom_order_status( $order_statuses ) { 20 $order_statuses['wc-preparing'] = 'In assembly'; 21 return $order_statuses; 22 } 23 add_filter( 'wc_order_statuses', 'sdstudio_add_custom_order_status' );
Etter at du har lagret functions.php, vil den nye statusen dukke opp i nedtrekksmenyen for ordrestatus i administrasjonspanelet og i WooCommerce-rapporter. Systemet ser den som en fullverdig status, du kan filtrere ordrer, endre statusen manuelt og bruke den i hooks.
Hva som skjer her
Funksjonen register_post_status() oppretter en ny poststatus med prefikset wc-, dette er en WooCommerce-konvensjon. Parameteren label angir det lesbare navnet i administrasjonspanelet. label_count, via _n_noop(), håndterer korrekt visning av tellere i det norske grensesnittet.
Filteret wc_order_statuses legger statusen til i arrayet som WooCommerce bruker for å bygge listen. Uten dette steget vil statusen være registrert i systemet, men ikke vises i nedtrekksmenyen for ordrer.

Visuelt ser resultatet nøyaktig slik ut, den nye statusen vises i den generelle listen sammen med standardstatusene.
Steg 2: legge til flere statuser og e-postvarsler
For én status fungerer koden over perfekt. Hvis du trenger flere, er det bare å duplisere register_post_status() inne i den samme funksjonen og legge til en oppføring i $order_statuses-arrayet. For eksempel, for en butikk med produksjon på bestilling:
1 function sdstudio_register_multiple_statuses() { 2 // Status "In production" 3 register_post_status( 'wc-in-production', array( 4 'label' => 'In production', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In production (%s)', 11 'In production (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 16 // Status "Ready to ship" 17 register_post_status( 'wc-ready-to-ship', array( 18 'label' => 'Ready to ship', 19 'public' => true, 20 'exclude_from_search' => false, 21 'show_in_admin_all_list' => true, 22 'show_in_admin_status_list' => true, 23 'label_count' => _n_noop( 24 'Ready to ship (%s)', 25 'Ready to ship (%s)', 26 'sdstudio' 27 ), 28 ) ); 29 } 30 add_action( 'init', 'sdstudio_register_multiple_statuses' ); 31 32 function sdstudio_add_multiple_statuses( $order_statuses ) { 33 $order_statuses['wc-in-production'] = 'In production'; 34 $order_statuses['wc-ready-to-ship'] = 'Ready to ship'; 35 return $order_statuses; 36 } 37 add_filter( 'wc_order_statuses', 'sdstudio_add_multiple_statuses' );
Merk: statusidentifikatoren (det første argumentet til register_post_status) starter alltid med wc-. Uten dette prefikset vil ikke WooCommerce fange opp statusen.
E-postvarsler for egendefinerte statuser
Som standard sender ikke WooCommerce e-post ved endring til en egendefinert status. For å aktivere varsler, legg til filteret woocommerce_email_actions:
1 function sdstudio_add_custom_status_email( $email_actions ) { 2 $email_actions[] = 'woocommerce_order_status_wc-preparing'; 3 $email_actions[] = 'woocommerce_order_status_wc-in-production'; 4 return $email_actions; 5 } 6 add_filter( 'woocommerce_email_actions', 'sdstudio_add_custom_status_email' );
Etter dette kan du konfigurere e-postmalen i WooCommerce → Innstillinger → E-poster, den nye statusen vil vises i listen over utløsere for tilpasning. Malen opprettes i barnetemaet under stien woocommerce/emails/, filen navngis etter mønsteret customer-<status>.php.
Plugins for ordrestatuser: når kode ikke passer
Kode er ikke den eneste veien. Hvis du ikke vil redigere functions.php eller trenger å endre statuser ofte, finnes det plugins. To hovedalternativer:
WooCommerce Order Status Manager, den offisielle utvidelsen fra WooCommerce. Legger til et grensesnitt for å opprette og redigere statuser direkte fra administrasjonspanelet: WooCommerce → Innstillinger → Ordrestatuser. Støtter e-postvarsler, ikoner, farger og import/eksport av statuser. Betalt, inkludert i enkelte WooCommerce-planer.
Flexi Custom Order Status, en gratis plugin fra WordPress.org-katalogen. Gir også en visuell editor for statuser, men med færre funksjoner. Passer for grunnleggende scenarioer: la til en status, tildelte en farge, aktiverte en e-post.
Hvilken vei du bør velge:
- Du trenger én eller to statuser og er ikke redd for kode,
functions.phper nok. - Det er mange statuser, de endres ofte, eller nettstedet administreres av en kunde uten tekniske ferdigheter, skaff en plugin.
- Du bruker HPOS (High-Performance Order Storage), begge tilnærminger fungerer. Statuser er fortsatt basert på
register_post_status(), HPOS påvirker dem ikke.
Den korte videoen over viser prosessen med å legge til en egendefinert status på fem minutter, fra plugin-installasjon til første bruk i ordrer.
⁉️🤔 Vanlige spørsmål
Fungerer egendefinert status med HPOS?
Ja, fullstendig. HPOS endrer måten ordredata lagres på, men rører ikke poststatus. Funksjonen
register_post_status()forblir hovedmekanismen, koden din vil fungere med HPOS både aktivert og deaktivert.
Kan du angi en farge for en egendefinert status?
Via kode, bare med CSS-stiler i administrasjonspanelet: koble deg på klassen
.status-wc-preparingog sett bakgrunnen. Mer praktisk via plugins: Order Status Manager og Flexi gir visuelt fargevalg uten en eneste linje kode.
Hvordan sletter man en opprettet status?
Fjern den fra
register_post_status()og fra filteretwc_order_statuses. Ordrer med denne statusen vil ikke forsvinne, de forblir i databasen, men statusen slutter å vises i nedtrekkslisten. Før sletting, flytt alle ordrer med den fjernbare statusen til en annen, slik at du ikke mister dem av syne.
Hvordan oversetter man statuser til et annet språk?
Parameteren
labeliregister_post_status()aksepterer en streng, oppgi navnet på det ønskede språket. Hvis nettstedet er flerspråklig, pakk strengen inn i et kall til__()eller_x()med et tekstdomene, og oversett via.po/.mo-filer som all annen tematekst.
Er wc--prefikset obligatorisk?
Ja. WooCommerce filtrerer statuser etter dette prefikset. Hvis du registrerer en status uten
wc-, vil den ikke vises i ordreadministrasjonen. Unntak, plugins: de legger til prefikset selv eller omgår filtrering med interne mekanismer.
Kan du legge til en egendefinert status uten kode og uten en plugin?
Uten kode og uten en plugin, nei. WooCommerce tilbyr ikke et grensesnitt for å opprette statuser ut av boksen. Den minimale veien uten programmering, gratis Flexi Custom Order Status fra WordPress.org-katalogen. Ett-klikks installasjon, konfigurasjon via administrasjonspanelet.
Hva du bør bruke til din oppgave
Egendefinerte ordrestatuser er en av de WooCommerce-mekanismene som er lett å hoppe over mens butikken er liten. Men så snart produksjon, trinnvis logistikk eller manuell ordrebekreftelse dukker opp, blir administrasjonspanelet til kaos av vage notater uten dem.
- Du trenger én eller to statuser og har redigert
functions.phpfør, kode fra steg 1 vil løse oppgaven på fem minutter. - Du trenger en visuell editor og fargeinnstillinger for kunden, Flexi Custom Order Status (gratis).
- Statuser er en del av en kompleks forretningsprosess med e-postscenarioer og dusinvis av stadier, WooCommerce Order Status Manager (offisiell utvidelse).
Sjekk hvilken tilnærming som passer deg best og legg til din første egendefinerte status i dag. Hvis du bruker en annen metode eller kjenner til en plugin som ikke er i artikkelen, del i kommentarene.



