
🏪 Kohandatud WooCommerce'i tellimuse staatused: kuidas luua ja seadistada
Töötlesime tellimuse, kuid selle etapi jaoks pole standardset staatust. „Töötlemine" koostamise jaoks, „Lõpetatud" saatmise jaoks ning vahepeal tühjus. Pood kasvab ja seitsmest vaikimisi WooCommerce’i staatusest enam ei piisa.
Kohandatud staatuse saab lisada kahel viisil: paari koodireaga failis functions.php või valmis pluginaga. Mõlemad lähenemised töötavad ega lõhu standardset tellimuste loogikat. Allpool samm-sammult, testitud koodi ja programmeerimisvaba alternatiiviga.
💡 Kiirülevaade:
- Millised staatused on WooCommerce’iga kohe kaasas ja miks neist ei piisa
- Kohandatud staatuse registreerimine PHP koodi abil
- Mitme staatuse ja kohandatud e-posti teavituste lisamine
- Pluginad tellimuse staatuste jaoks, kui kood ei sobi
- Vastused levinud küsimustele: HPOS, värvid, kustutamine, tõlkimine
Millised staatused on WooCommerce’iga kohe kaasas
Vaikimisi pakub WooCommerce seitset tellimuse staatust. Igaüks neist on tihedalt seotud konkreetse punktiga tellimuse elutsüklis:
Staatus | Mida see tähendab |
|---|---|
Makse ootel | Tellimus loodud, makset ei ole laekunud |
Töötlemisel | Makse laekunud, tellimust töödeldakse |
Lõpetatud | Tellimus täidetud ja suletud |
Ootel | Maksekinnituse ootel |
Tühistatud | Kliendi või administraatori poolt tühistatud |
Tagastatud | Raha tagastatud |
Ebaõnnestunud | Makse ebaõnnestus |
Tüüpilise poe jaoks on see komplekt piisav. Kuid niipea, kui ilmub kohandatud töötlemisloogika, näiteks tellimustoodang või mitmeastmeline tarne, ei piisa seitsmest staatusest enam. Vaja on „Koostamisel", „Üle antud kullerile", „Ettemakse ootel" või „Vajab halduri kontrolli".
1. Samm: kohandatud staatuse registreerimine koodi abil
Enne WooCommerce 3.0 kasutasid staatused taksonoomiat shop_order_status ja uue lisamine oli keeruline. Nüüd on see lihtsam: tellimuse staatus on kohandatud postitüübi shop_order postistaatus. See registreeritakse üheainsa funktsiooni register_post_status() ja filtri wc_order_statuses abil.
Kood lisatakse alamteema faili functions.php. Enne mis tahes muudatusi tee täielik saidist varukoopia.
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' );
Pärast faili functions.php salvestamist ilmub uus staatus administraatori paneelis tellimuse staatuse rippmenüüsse ja WooCommerce’i aruannetesse. Süsteem näeb seda täisväärtusliku staatusena, saad tellimusi filtreerida, staatust käsitsi muuta ja seda konksudes kasutada.
Mis siin toimub
Funktsioon register_post_status() loob uue postistaatuse eesliitega wc-, see on WooCommerce’i tava. Parameeter label määrab loetava nime administraatori paneelis. label_count funktsiooni _n_noop() kaudu haldab loendurite korrektset kuvamist eestikeelses kasutajaliideses.
Filter wc_order_statuses lisab staatuse massiivi, mida WooCommerce kasutab nimekirja koostamiseks. Ilma selle sammuta on staatus süsteemis registreeritud, kuid ei ilmu tellimuse rippmenüüsse.

Visuaalselt näeb tulemus täpselt selline välja, uus staatus kuvatakse üldises nimekirjas koos standardsetega.
2. Samm: mitme staatuse ja e-posti teavituste lisamine
Ühe staatuse jaoks töötab ülaltoodud kood suurepäraselt. Kui vaja on mitut, siis lihtsalt dubleeri register_post_status() sama funktsiooni sees ja lisa kirje massiivi $order_statuses. Näiteks tellimustoodanguga poe jaoks:
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' );
Märkus: staatuse identifikaator (funktsiooni register_post_status() esimene argument) algab alati eesliitega wc-. Ilma selle eesliiteta WooCommerce staatust üles ei leia.
E-posti teavitused kohandatud staatuste jaoks
Vaikimisi ei saada WooCommerce kohandatud staatusele muutmisel e-kirju. Teavituste lubamiseks lisa filter 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' );
Pärast seda saad e-kirja malli seadistada jaotises WooCommerce → Seaded → E-kirjad, uus staatus ilmub kohandamiseks päästikute nimekirja. Mall luuakse alamteemas asukohta woocommerce/emails/, faili nimi järgib mustrit customer-<status>.php.
Pluginad tellimuse staatuste jaoks: kui kood ei sobi
Kood ei ole ainus tee. Kui sa ei soovi faili functions.php muuta või on vaja staatusi sageli muuta, on olemas pluginad. Kaks peamist võimalust:
WooCommerce Order Status Manager, WooCommerce’i ametlik laiendus. Lisab liidese staatuste loomiseks ja muutmiseks otse administraatori paneelist: WooCommerce → Seaded → Tellimuse staatused. Toetab e-posti teavitusi, ikoone, värve ning staatuste importi/eksporti. Tasuline, sisaldub mõnes WooCommerce’i paketis.
Flexi Custom Order Status, tasuta plugin WordPressi.org kataloogist. Pakub samuti visuaalset redaktorit staatuste jaoks, kuid vähemate võimalustega. Sobib põhistsenaariumite jaoks: lisasid staatuse, määrasid värvi, lubasid e-kirja.
Milline tee valida:
- Vajad ühte või kahte staatust ega karda koodi, piisab failist
functions.php. - Staatusi on palju, need muutuvad sageli või saiti haldab klient ilma tehniliste oskusteta, võta plugin.
- Kasutad HPOS-i (High-Performance Order Storage), mõlemad lähenemised töötavad. Staatused põhinevad endiselt funktsioonil
register_post_status(), HPOS neid ei mõjuta.
Ülaltoodud lühivideo näitab kohandatud staatuse lisamise protsessi viie minutiga, alates plugina paigaldamisest kuni esmakordse kasutamiseni tellimustes.
⁉️🤔 Levinud küsimused
Kas kohandatud staatus töötab HPOS-iga?
Jah, täielikult. HPOS muudab tellimuse andmete salvestamise viisi, kuid ei puuduta postistaatust. Funktsioon
register_post_status()jääb peamiseks mehhanismiks, sinu kood töötab nii HPOS-i sisse- kui ka väljalülitatud olekus.
Kas kohandatud staatusele saab värvi määrata?
Koodi abil ainult CSS-stiilidega administraatori paneelis: haagi klassi
.status-wc-preparingkülge ja määra taust. Mugavam on pluginatega: Order Status Manager ja Flexi pakuvad visuaalset värvivalikut ilma ühegi koodireata.
Kuidas loodud staatust kustutada?
Eemalda see funktsioonist
register_post_status()ja filtristwc_order_statuses. Selle staatusega tellimused ei kao, need jäävad andmebaasi, kuid staatus lakkab rippmenüüs kuvamast. Enne kustutamist vii kõik eemaldatava staatusega tellimused mõnele teisele staatusele, et neid silmist ei kaotaks.
Kuidas tõlkida staatusi teise keelde?
Parameeter
labelfunktsioonisregister_post_status()võtab vastu sõne, määra nimi vajalikus keeles. Kui sait on mitmekeelne, mähi sõne funktsiooni__()või_x()väljakutsesse koos tekstidomeeniga ja tõlgi.po/.mofailide kaudu nagu mis tahes muud teema teksti.
Kas eesliide wc- on kohustuslik?
Jah. WooCommerce filtreerib staatusi selle eesliite järgi. Kui registreerid staatuse ilma
wc-ta, ei ilmu see tellimuste administraatori paneelis. Erandiks on pluginad: need lisavad eesliite ise või lähevad filtreerimisest mööda sisemiste mehhanismidega.
Kas kohandatud staatust saab lisada ilma koodi ja pluginata?
Ilma koodi ja pluginata ei saa. WooCommerce ei paku vaikimisi liidest staatuste loomiseks. Minimaalne programmeerimisvaba tee on tasuta Flexi Custom Order Status WordPress.org kataloogist. Ühe klõpsuga paigaldus, seadistamine administraatori paneeli kaudu.
Mida oma ülesande jaoks kasutada
Kohandatud tellimuse staatused on üks neid WooCommerce’i mehhanisme, millest on lihtne mööda vaadata, kuni pood on väike. Kuid niipea, kui ilmub tootmine, etapiviisiline logistika või tellimuste käsitsi kontroll, muutub administraatori paneel ilma nendeta ebamääraste märkmete kaoseks.
- Vajad ühte või kahte staatust ja oled varem faili
functions.phpmuutnud, 1. sammu kood lahendab ülesande viie minutiga. - Vajad visuaalset redaktorit ja värviseadeid kliendi jaoks, Flexi Custom Order Status (tasuta).
- Staatused on osa keerukast äriprotsessist koos e-posti stsenaariumite ja kümnete etappidega, WooCommerce Order Status Manager (ametlik laiendus).
Vaata, milline lähenemine sulle paremini sobib, ja lisa oma esimene kohandatud staatus juba täna. Kui kasutad mõnda muud meetodit või tead pluginat, mida artiklis ei ole, jaga kommentaarides.



