Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

🏪 Mukautetut WooCommerce-tilaustilat: miten luoda ja määrittää

🏪 Mukautetut WooCommerce-tilaustilat: miten luoda ja määrittää

Käsittelimme tilauksen, mutta tälle vaiheelle ei ole vakiotilaa. "Käsittelyssä" kokoonpanoon, "Valmis" toimitukseen ja tyhjiö siltä väliltä. Verkkokauppa kasvaa, eivätkä seitsemän oletusarvoista WooCommerce-tilaa enää riitä.

Voit lisätä mukautetun tilan kahdella tavalla: muutamalla koodirivillä functions.php-tiedostoon tai valmiilla lisäosalla. Molemmat tavat toimivat eivätkä riko vakiotilauslogiikkaa. Alla vaihe vaiheelta, testatulla koodilla ja vaihtoehdolla ilman ohjelmointia.

💡 Pikaopas:

  • Mitkä tilat WooCommerce sisältää valmiina ja miksi ne eivät riitä
  • Mukautetun tilan rekisteröinti PHP-koodilla
  • Useiden tilojen ja mukautettujen sähköposti-ilmoitusten lisääminen
  • Lisäosat tilaustiloille, kun koodi ei sovi
  • Vastauksia yleisiin kysymyksiin: HPOS, värit, poisto, kääntäminen

Mitkä tilat WooCommerce sisältää valmiina

Oletuksena WooCommerce tarjoaa seitsemän tilaustilaa. Jokainen on tiukasti sidoksissa tiettyyn kohtaan tilauksen elinkaaressa:

Tila

Mitä se tarkoittaa

Odottaa maksua

Tilaus luotu, maksua ei vastaanotettu

Käsittelyssä

Maksu vastaanotettu, tilausta käsitellään

Valmis

Tilaus toimitettu ja suljettu

Odottaa

Odottaa maksun vahvistusta

Peruutettu

Asiakkaan tai ylläpitäjän peruuttama

Hyvitetty

Varat palautettu

Epäonnistui

Maksu epäonnistui

Tyypilliselle verkkokaupalle tämä sarja riittää. Mutta heti kun mukaan tulee mukautettua käsittelylogiikkaa, kuten tilauksesta valmistettava tuotanto tai monivaiheinen toimitus, seitsemän tilaa ei enää riitä. Tarvitset tiloja kuten "Kokoonpanossa", "Luovutettu toimitukseen", "Odottaa ennakkomaksua" tai "Vaatii esihenkilön tarkistuksen".

Vaihe 1: mukautetun tilan rekisteröinti koodilla

Ennen WooCommerce 3.0:aa tilat käyttivät shop_order_status-taksonomiaa, ja uuden lisääminen oli hankalaa. Nyt se on yksinkertaisempaa: tilaustila on mukautetun sisältötyypin shop_order julkaisun tila. Se rekisteröidään yhdellä register_post_status()-funktiolla ja wc_order_statuses-suodattimella.

Koodi lisätään lapsiteeman functions.php-tiedostoon. Ennen muokkauksia tee täydellinen sivuston varmuuskopio.

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' );

Kun functions.php on tallennettu, uusi tila ilmestyy tilaustilan pudotusvalikkoon hallintapaneelissa ja WooCommerce-raportteihin. Järjestelmä näkee sen täysimittaisena tilana, voit suodattaa tilauksia, vaihtaa tilaa manuaalisesti ja käyttää sitä koukuissa.

Mitä tässä tapahtuu

register_post_status()-funktio luo uuden julkaisun tilan wc--etuliitteellä, tämä on WooCommercen käytäntö. label-parametri asettaa luettavan nimen hallintapaneelissa. label_count käsittelee _n_noop()-funktion kautta laskurien oikean näyttämisen suomenkielisessä käyttöliittymässä.

wc_order_statuses-suodatin lisää tilan taulukkoon, jota WooCommerce käyttää listan rakentamiseen. Ilman tätä vaihetta tila rekisteröidään järjestelmään, mutta se ei näy tilauksen pudotusvalikossa.

Mukautettu tilauksen tila WooCommerce-hallintapaneelissa

Visuaalisesti tulos näyttää täsmälleen tältä, uusi tila näkyy yleisessä listassa vakiotilojen rinnalla.

Vaihe 2: useiden tilojen ja sähköposti-ilmoitusten lisääminen

Yhdelle tilalle yllä oleva koodi toimii täydellisesti. Jos tarvitset useita, kopioi vain register_post_status() saman funktion sisällä ja lisää merkintä $order_statuses-taulukkoon. Esimerkiksi verkkokaupalle, jossa on tilauksesta valmistettava tuotanto:

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' );

Huomioi: tilan tunniste (register_post_status-funktion ensimmäinen argumentti) alkaa aina wc--etuliitteellä. Ilman tätä etuliitettä WooCommerce ei huomioi tilaa.

Sähköposti-ilmoitukset mukautetuille tiloille

Oletuksena WooCommerce ei lähetä sähköposteja, kun tilaksi vaihdetaan mukautettu tila. Ota ilmoitukset käyttöön lisäämällä woocommerce_email_actions-suodatin:

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' );

Tämän jälkeen voit määrittää sähköpostipohjan kohdassa WooCommerce → Asetukset → Sähköpostit, uusi tila ilmestyy liipaisinten listaan muokattavaksi. Pohja luodaan lapsiteemaan polkuun woocommerce/emails/, tiedosto nimetään kaavan customer-<status>.php mukaan.

Lisäosat tilaustiloille: kun koodi ei sovi

Koodi ei ole ainoa tie. Jos et halua muokata functions.php-tiedostoa tai sinun täytyy vaihtaa tiloja usein, on olemassa lisäosia. Kaksi päävaihtoehtoa:

WooCommerce Order Status Manager, WooCommercen virallinen laajennus. Lisää käyttöliittymän tilojen luomiseen ja muokkaamiseen suoraan hallintapaneelista: WooCommerce → Asetukset → Tilaustilat. Tukee sähköposti-ilmoituksia, kuvakkeita, värejä ja tilojen tuontia/vientiä. Maksullinen, sisältyy joihinkin WooCommerce-paketteihin.

Flexi Custom Order Status, ilmainen lisäosa WordPress.orgin valikoimasta. Tarjoaa myös visuaalisen editorin tiloille, mutta vähemmillä ominaisuuksilla. Sopii perusskenaarioihin: lisäsit tilan, annoit värin, otit sähköpostin käyttöön.

Mikä polku valita:

  • Tarvitset yhden tai kaksi tilaa etkä pelkää koodia, functions.php riittää.
  • Tiloja on paljon, ne vaihtuvat usein tai sivustoa hallinnoi asiakas ilman teknisiä taitoja, hanki lisäosa.
  • Käytät HPOS:ia (High-Performance Order Storage), molemmat tavat toimivat. Tilat perustuvat edelleen register_post_status()-funktioon, HPOS ei vaikuta niihin.

Yllä oleva lyhyt video näyttää mukautetun tilan lisäämisen viidessä minuutissa, lisäosan asennuksesta ensimmäiseen käyttöön tilauksissa.

⁉️🤔 Yleisiä kysymyksiä

Toimiiko mukautettu tila HPOS:n kanssa?

Kyllä, täysin. HPOS muuttaa tilaustietojen tallennustapaa, mutta ei koske julkaisun tilaan. register_post_status()-funktio pysyy päämekanismina, koodisi toimii HPOS:n ollessa sekä käytössä että pois käytöstä.

Voiko mukautetulle tilalle asettaa värin?

Koodilla vain CSS-tyyleillä hallintapaneelissa: koukuta .status-wc-preparing-luokkaan ja aseta tausta. Kätevämmin lisäosilla: Order Status Manager ja Flexi tarjoavat visuaalisen värinvalinnan ilman yhtäkään koodiriviä.

Kuinka poistaa luotu tila?

Poista se register_post_status()-funktiosta ja wc_order_statuses-suodattimesta. Tämän tilan tilaukset eivät katoa, ne säilyvät tietokannassa, mutta tila lakkaa näkymästä pudotusvalikossa. Ennen poistoa siirrä kaikki poistettavan tilan tilaukset toiseen tilaan, jotta et menetä niitä näkyvistä.

Kuinka kääntää tilat toiselle kielelle?

label-parametri register_post_status-funktiossa hyväksyy merkkijonon, määritä nimi halutulla kielellä. Jos sivusto on monikielinen, kääri merkkijono __()- tai _x()-kutsuun tekstidomeenin kanssa ja käännä .po/.mo-tiedostojen kautta kuten mikä tahansa muukin teeman teksti.

Onko wc--etuliite pakollinen?

Kyllä. WooCommerce suodattaa tiloja tämän etuliitteen perusteella. Jos rekisteröit tilan ilman wc--etuliitettä, se ei näy tilauksen hallintapaneelissa. Poikkeus, lisäosat: ne lisäävät etuliitteen itse tai ohittavat suodatuksen sisäisillä mekanismeilla.

Voiko mukautetun tilan lisätä ilman koodia ja ilman lisäosaa?

Ilman koodia ja ilman lisäosaa ei voi. WooCommerce ei tarjoa käyttöliittymää tilojen luomiseen valmiina. Minimaalinen polku ilman ohjelmointia, ilmainen Flexi Custom Order Status WordPress.orgin valikoimasta. Yhden klikkauksen asennus, määritys hallintapaneelin kautta.

Mitä käyttää omaan tehtävääsi

Mukautetut tilaustilat ovat yksi niistä WooCommercen mekanismeista, jotka on helppo ohittaa, kun verkkokauppa on pieni. Mutta heti kun tuotanto, vaiheittainen logistiikka tai manuaalinen tilausvarmennus tulee mukaan, ilman niitä hallintapaneeli muuttuu epämääräisten muistiinpanojen kaaokseksi.

  • Tarvitset yhden tai kaksi tilaa ja olet muokannut functions.php-tiedostoa aiemmin, vaiheen 1 koodi hoitaa tehtävän viidessä minuutissa.
  • Tarvitset visuaalisen editorin ja väriasetukset asiakkaalle, Flexi Custom Order Status (ilmainen).
  • Tilat ovat osa monimutkaista liiketoimintaprosessia, jossa on sähköpostiskenaarioita ja kymmeniä vaiheita, WooCommerce Order Status Manager (virallinen laajennus).

Tarkista, mikä lähestymistapa sopii sinulle paremmin, ja lisää ensimmäinen mukautettu tilasi jo tänään. Jos käytät eri menetelmää tai tiedät lisäosan, jota ei ole artikkelissa, jaa se kommenteissa.