1 modulis · 1.2
Kaip veikia WooCommerce
1 modulis: Prieš pradedant · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite paaiškinti, kaip WooCommerce veikia WordPress sistemoje ir kur yra prekės, užsakymai, krepšelis bei suplanuotos užduotys.
Pagrindinės sąvokos: prekės tipas, įrašo tipas product, užsakymai (HPOS), parduotuvės puslapiai, sesija ir krepšelis, Store API, REST API, Action Scheduler, operaciniai el. laiškai, plėtiniai
Įskiepis, kuris Jūsų svetainę paverčia parduotuve
WordPress kurse (pamokos 1.2 ir 1.3) matėte, kaip sukuriamas puslapis: interneto serveris perduoda užklausą PHP, PHP įkelia WordPress, įskiepius ir temą, paima duomenis iš duomenų bazės ir iš jų sukuria HTML. WooCommerce įsilieja į šį procesą kaip didelis įskiepis. Jis atneša keturis dalykus:
- Duomenys: prekės, užsakymai, klientai, mokesčių tarifai, pristatymo zonos.
- Puslapiai: parduotuvė, krepšelis, apmokėjimas ir paskyra.
- Procesai: atskiras krepšelis kiekvienam lankytojui, mokėjimai per mokėjimų paslaugų teikėją, el. laiškai, atsargų atnaujinimas, suplanuotos užduotys.
- Prieigos taškai programoms: Store API ir REST API.
Kas žino, kur yra šios dalys, vėliau klaidą suras daug greičiau. Todėl dabar jas aptarsime po vieną.
Prekės: atskiras įrašo tipas
WordPress turi įrašų tipus: puslapiai ir įrašai yra du iš jų (WordPress kurso pamoka 4.2). WooCommerce prideda įrašo tipą product. Taigi prekė, kaip ir puslapis, saugoma įrašų lentelėje, o papildomi jos duomenys (kaina, SKU, atsargos, svoris) saugomi kaip metaduomenys. Prekių kategorijos ir žymos yra atskiros taksonomijos, nesusijusios su Jūsų tinklaraščio kategorijomis ir žymomis.
Kiekviena prekė turi prekės tipą. Pagrindiniai tipai yra paprasta, sugrupuota, išorinė (nuoroda į kitą parduotuvę) ir kintama prekė. Prie jų galite pažymėti varneles virtuali (nieko nereikia siųsti) ir atsisiunčiama (failas po apmokėjimo). Kintama prekė turi variantus, pavyzdžiui, arbatinukas trijų spalvų; kiekvienas variantas yra atskiras elementas su savo kaina ir atsargomis. Plačiau apie tai kalbama 3 modulyje.
Užsakymai: atskiros lentelės (HPOS)
Anksčiau WooCommerce užsakymus taip pat saugojo kaip įrašus. Didelio srauto parduotuvėse tai veikė lėtai, nes užsakymai ir tinklaraščio įrašai dalijosi ta pačia didele lentele. Todėl atsirado HPOS (High-Performance Order Storage): užsakymai saugomi atskirose lentelėse, pavyzdžiui, wc_orders, wc_order_addresses ir wc_orders_meta (prieš jas rašomas Jūsų svetainės lentelių priešdėlis). Nuo WooCommerce 8.2 (2023 m. spalio mėn.) HPOS įjungtas kiekviename naujame diegime. Senesnė parduotuvė naudoja senąjį saugojimo būdą, kol pati neperjungiate jo skiltyje WooCommerce > Nustatymai > Papildoma > Galimybės.
Kodėl tai svarbu žinoti? Dėl trijų priežasčių:
- Atsarginės kopijos: užsakymai saugomi ne Jūsų failuose, o duomenų bazėje. Atsarginė kopija be duomenų bazės e. parduotuvei yra bevertė (pamoka 6.2).
- Plėtiniai: senesnis plėtinys, kuris užsakymus vis dar skaito kaip įrašus, su HPOS gerai neveikia. WooCommerce įspėja prie įskiepio, jei jis nesuderinamas.
- Atkūrimas: jei atkuriate vakarykštę atsarginę kopiją, šiandienos užsakymai dingsta. E. parduotuvei tai daug blogiau nei tinklaraščiui (pamoka 6.2).
Krepšelis: kiekvienam lankytojui skirtingas
Įprastas puslapis visiems lankytojams vienodas. Krepšelis ne. Kai tik lankytojas įsideda ką nors į krepšelį, WooCommerce pradeda sesiją: naršyklėje sukuriamas slapukas (wp_woocommerce_session_ su po juo einančiu kodu), o duomenų bazės sesijų lentelėje įrašoma eilutė. Taip parduotuvė per kitą užklausą žino, kuris krepšelis priklauso šiam lankytojui.
Dvi pasekmės, su kuriomis susidursite vėliau:
- Krepšelis, apmokėjimas ir paskyra niekada neturi patekti į puslapių podėlį, kitaip vienas lankytojas matys kito lankytojo krepšelį. WooCommerce šiuose puslapiuose pats siunčia antraštes, draudžiančias podėlį (pamoka 6.4).
- Parduotuvė, kuri sesiją pradeda kiekvienam lankytojui, net ir be krepšelio, padaro visos svetainės puslapių podėlį beprasmį. Tai dažna temų ir plėtinių klaida.
Parduotuvės puslapiai ir blokai
Diegimo metu WooCommerce sukuria keturis puslapius: Parduotuvė, Krepšelis, Apmokėjimas ir Paskyra. Nuo 8.3 versijos (2023 m. lapkričio mėn.) nauji diegimai krepšeliui ir apmokėjimui naudoja blokus; senesnės parduotuvės dažnai dar naudoja trumpuosius kodus (shortcodes). Veikia abu variantai. Skirtumas svarbus plėtiniams: plėtinys, kuris ką nors prideda prie apmokėjimo, turi palaikyti Jūsų naudojamą variantą. Pamokoje 2.2 parodyta, kaip tai patikrinti.
Du prieigos taškai programoms: Store API ir REST API
WooCommerce turi du programuojamus prieigos taškus, o jų skirtumas svarbus saugumui:
| Store API | REST API | |
|---|---|---|
| Adresas | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Kam skirta | Pačiai parduotuvei (blokams naršyklėje) ir kitoms parduotuvės sąsajoms | Integracijoms: buhalterijai, atsargų valdymui, programėlėms |
| Ar reikia rakto? | Ne, vieša: kiekvienas gali skaityti prekes ir kainas | Taip, API raktas su skaitymo arba rašymo teisėmis |
| Kas joje yra | Prekės, kainos, atsargų būsena, dabartinio lankytojo krepšelis | Taip pat užsakymai, klientai, ataskaitos |
Tai, kad Store API vieša, nėra duomenų nutekėjimas: tai lygiai tas pats, ką parduotuvėje mato kiekvienas lankytojas, tik programoms suprantama forma. Išbandykite savo parduotuvėje: naršyklėje atidarykite https://shop.example.com/wp-json/wc/store/v1/products (su savo adresu) ir pamatysite savo prekes JSON formatu. Tuo tarpu REST API be rakto turi būti uždaryta. Pamokoje 2.4 tikrinamos abi.
Užkulisiuose: Action Scheduler ir el. laiškai
Daug darbo e. parduotuvėje atliekama ne tada, kai klientas laukia, o vėliau. Tam WooCommerce naudoja Action Scheduler: suplanuotų užduočių eilę, pavyzdžiui, neapmokėto užsakymo atšaukimą praėjus nustatytam laikui, webhook pranešimų siuntimą ar ataskaitų atnaujinimą. Eilę matote skiltyje WooCommerce > Būsena > Suplanuoti veiksmai. Šios užduotys vykdomos per WP-Cron, kuris veikia tik tada, kai yra lankytojų. Ramioje parduotuvėje darbai gali likti neatlikti; pamokoje 7.3 parodyta, kaip tai išsprendžia tikras cron.
Be to, WooCommerce siunčia operacinius el. laiškus: laišką Jums gavus naują užsakymą ir laiškus klientui, kai užsakymas gautas, išsiųstas, grąžinti pinigai ar sukurta nauja paskyra. Jei jie nepasiekia gavėjo, klientas mano, kad kažkas negerai. Pamokoje 6.1 sutvarkomas laiškų pristatomumas.
Praktikoje: kaip tai atrodo WooCommerce
Įdiegus WooCommerce, Theehuis Example WordPress valdymo skydelyje atsiranda trys nauji meniu: WooCommerce (užsakymai, klientai, nustatymai, būsena), Produktai ir Statistika (naujausiose versijose kartais po WooCommerce). Skiltyje WooCommerce > Būsena rasite serverio aplinką, duomenų bazės lenteles, suplanuotus veiksmus ir žurnalus. Šio ekrano Jums netrukus prireiks dažnai. Žingsniai pas visus talpinimo paslaugų teikėjus vienodi, nes jie yra pačioje WordPress.
Santrauka
- WooCommerce atneša duomenis, puslapius, procesus ir du programuojamus prieigos taškus.
- Prekės yra atskiras įrašo tipas; naujose parduotuvėse užsakymai saugomi atskirose lentelėse (HPOS, numatytasis nuo 8.2).
- Krepšelis veikia su atskira sesija kiekvienam lankytojui; todėl krepšelis, apmokėjimas ir paskyra negali patekti į podėlį.
- Store API vieša ir rodo tai, ką mato kiekvienas lankytojas; REST API be rakto turi būti uždaryta.
- Suplanuotos užduotys vykdomos per Action Scheduler ir WP-Cron; el. laiškai yra užsakymo proceso dalis.
Testas (quiz)
Užduotis
Užduotis A1.2: Ar ši svetainė veikia su WooCommerce? Įveskite domeną, pasirinkite „taip“ arba „ne“ ir užrašykite, kokį įrodymą matėte (pavyzdžiui, „generator“ arba „wc/store/v1“). Programa atsisiunčia pagrindinį puslapį, perskaito REST indeksą (/wp-json/, tik vardų sričių sąrašą) ir užklausia /wp-json/wc/store/v1/products?per_page=1. WooCommerce ji atpažįsta pagal meta generator su WooCommerce, vardų sritį wc/store/v1 REST indekse, veikiančią Store API, failus iš /wp-content/plugins/woocommerce/ arba body klasę woocommerce. Žalia: Jūsų pasirinkimas teisingas, o Jūsų įrodymas yra antraštėse, HTML, REST indekse arba Store API atsakyme; tada taip pat matote prekių skaičių ir valiutą. Oranžinė: Jūsų pasirinkimas teisingas, bet Jūsų įrodymo nerandame. Raudona: Jūsų pasirinkimas neteisingas. Pirmiausia išbandykite savo parduotuvėje, o paskui kitoje Jums žinomoje parduotuvėje. Į krepšelį nieko nededama ir nieko nesiunčiama.
Platesniam skaitymui
Kur aprašyti žingsniai valdymo skydelyje, jie taikomi WebOké; pas kitus paslaugų teikėjus veikia panašiai.
- Nemokamas WordPress kursas 1.2: Po gaubtu: serveris, PHP ir duomenų bazė
- Nemokamas WordPress kursas 1.3: Failai, wp-config ir duomenų bazė
- Nemokamas WordPress kursas 4.2: Puslapiai, įrašai, kategorijos ir žymos
- High-Performance Order Storage (developer.woocommerce.com, anglų kalba): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, anglų kalba): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (anglų kalba): https://actionscheduler.org/
