Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🏪 Kohandatud WooCommerce'i tellimuse staatused: kuidas luua ja seadistada

🏪 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
2function 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}
16add_action( 'init', 'sdstudio_register_custom_order_status' );
17
18// Adding status to WooCommerce list
19function sdstudio_add_custom_order_status( $order_statuses ) {
20 $order_statuses['wc-preparing'] = 'In assembly';
21 return $order_statuses;
22}
23add_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.

Kohandatud tellimuse olek WooCommerce'i halduspaneelil

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:

1function 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}
30add_action( 'init', 'sdstudio_register_multiple_statuses' );
31
32function 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}
37add_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:

1function 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}
6add_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-preparing kü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 filtrist wc_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 label funktsioonis register_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/.mo failide 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.php muutnud, 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.