Moodul 1 · 1.2
Kuidas WooCommerce töötab
Moodul 1: Enne alustamist · Lugemisaeg: 10 minutit
Õpieesmärk: Pärast seda õppetundi oskad selgitada, kuidas WooCommerce WordPressis töötab ning kus asuvad tooted, tellimused, ostukorv ja ajastatud ülesanded.
Põhimõisted: tootetüüp, postitustüüp product, tellimused (HPOS), poe lehed, seanss ja ostukorv, Store API, REST API, Action Scheduler, tehingukirjad, laiendused
Plugin, mis teeb sinu saidist poe
WordPressi kursusel (õppetund 1.2 ja 1.3) nägid, kuidas leht tekib: veebiserver annab päringu PHP-le, PHP laadib WordPressi, pluginad ja teema, võtab andmebaasist andmed ja teeb neist HTML-i. WooCommerce lülitub sellesse protsessi suure pluginana. See toob kaasa neli asja:
- Andmed: tooted, tellimused, kliendid, maksumäärad, tarnetsoonid.
- Lehed: pood, ostukorv, kassa ja Minu konto.
- Protsessid: igale külastajale oma ostukorv, maksed makseteenuse pakkuja kaudu, kirjad, laoseisu uuendamine, ajastatud ülesanded.
- Sisendid programmidele: Store API ja REST API.
Kui tead, kus need osad asuvad, leiad hiljem vea palju kiiremini. Seepärast vaatame neid nüüd ükshaaval.
Tooted: oma postitustüüp
WordPressis on postitustüübid: lehed ja postitused on neist kaks (WordPressi kursuse õppetund 4.2). WooCommerce lisab postitustüübi product. Toode asub seega nagu leht postituste tabelis ning selle lisaandmed (hind, SKU, laoseis, kaal) on salvestatud metaandmetena. Toodete kategooriad ja sildid on omaette taksonoomiad, sinu blogi omadest eraldi.
Igal tootel on tootetüüp. Põhivariandis on need lihtne, grupeeritud, väline (link teise poodi) ja muutuv. Lisaks saad sisse lülitada linnukesed virtuaalne (midagi ei saadeta) ja allalaaditav (fail pärast makset). Muutuval tootel on variatsioonid, näiteks teekann kolmes värvis; iga variatsioon on eraldi üksus oma hinna ja laoseisuga. Moodul 3 käsitleb seda põhjalikumalt.
Tellimused: omaette tabelid (HPOS)
Varem hoidis WooCommerce ka tellimusi postitustena. Suure liiklusega poodides muutus see aeglaseks, sest tellimused ja blogipostitused jagasid sama suurt tabelit. Seepärast tuli HPOS (High-Performance Order Storage): tellimused omaette tabelites, nagu wc_orders, wc_order_addresses ja wc_orders_meta (nende ees on sinu saidi tabelieesliide). Alates WooCommerce 8.2-st (oktoober 2023) on HPOS igas uues paigalduses sees. Vanem pood jääb vana salvestusviisi juurde, kuni lülitad ise ümber menüüs WooCommerce > Sätted > Täpsemad seaded > Funktsioonid.
Miks pead seda teadma? Kolmel põhjusel:
- Varukoopiad: tellimused ei ole sinu failides, vaid andmebaasis. Ilma andmebaasita varukoopia on e-poe jaoks väärtusetu (õppetund 6.2).
- Laiendused: vanem laiendus, mis loeb tellimusi veel postitustena, ei tööta HPOS-iga korralikult. WooCommerce hoiatab plugina juures, kui see ei ühildu.
- Taastamine: kui taastad eilse varukoopia, kaovad tänased tellimused. E-poe puhul on see palju hullem kui blogi puhul (õppetund 6.2).
Ostukorv: iga külastaja jaoks erinev
Tavaline leht on iga külastaja jaoks sama. Ostukorv mitte. Niipea kui külastaja paneb midagi ostukorvi, alustab WooCommerce seanssi: brauserisse tuleb küpsis (wp_woocommerce_session_ ja selle järel kood) ning andmebaasi seansitabelisse rida. Nii teab pood järgmise päringu ajal, milline ostukorv sellele külastajale kuulub.
Kaks tagajärge, mida näed hiljem uuesti:
- Ostukorv, kassa ja Minu konto ei tohi kunagi sattuda lehe vahemällu, muidu näeb üks külastaja teise ostukorvi. WooCommerce saadab neil lehtedel ise kaasa päised, mis vahemällu salvestamise keelavad (õppetund 6.4).
- Pood, mis alustab seanssi iga külastaja jaoks, ka ilma ostukorvita, muudab kogu saidi lehevahemälu kasutuks. See on teemade ja laienduste sage viga.
Poe lehed ja plokid
Paigaldamisel loob WooCommerce neli lehte: Pood, Ostukorv, Kassa ja Minu konto. Alates versioonist 8.3 (november 2023) kasutavad uued paigaldused ostukorvi ja kassa jaoks plokke; vanemad poed kasutavad sageli veel lühikoode. Mõlemad töötavad. Erinevus on laienduste jaoks oluline: laiendus, mis lisab kassasse midagi, peab toetama varianti, mida sina kasutad. Õppetund 2.2 näitab, kuidas seda kontrollida.
Kaks sisendit programmidele: Store API ja REST API
WooCommerce’il on kaks programmeeritavat sisendit ja nende erinevus on turvalisuse seisukohalt oluline:
| Store API | REST API | |
|---|---|---|
| Aadress | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Kellele | Poele endale (plokid brauseris) ja teistele poe esiosadele | Liidestele: raamatupidamine, laohaldus, rakendused |
| Kas võtit on vaja? | Ei, avalik: igaüks saab tooteid ja hindu lugeda | Jah, API võti lugemis- või kirjutamisõigusega |
| Mis seal on | Tooted, hinnad, laoseis, praeguse külastaja ostukorv | Ka tellimused, kliendid, aruanded |
See, et Store API on avalik, ei ole leke: see on täpselt see, mida iga külastaja poes näeb, lihtsalt kujul, mida programmid suudavad lugeda. Proovi oma poega: ava brauseris https://shop.example.com/wp-json/wc/store/v1/products (oma aadressiga) ja näed oma tooteid JSON-ina. REST API peab seevastu ilma võtmeta suletud olema. Õppetund 2.4 kontrollib mõlemat.
Kulisside taga: Action Scheduler ja kirjad
Suur osa e-poe tööst ei toimu siis, kui klient ootab, vaid hiljem. WooCommerce kasutab selleks Action Schedulerit: ajastatud ülesannete järjekorda, näiteks maksmata tellimuse tühistamine pärast määratud aega, veebikonksude (webhook) saatmine või aruannete uuendamine. Järjekorda näed menüüs WooCommerce > Olek > Planeeritud tegevused. Need ülesanded töötavad WP-Croni peal, mis käivitub ainult siis, kui on külastajaid. Vaikse poe puhul võib töö seetõttu seisma jääda; õppetund 7.3 näitab, kuidas päris cron selle lahendab.
Lisaks saadab WooCommerce tehingukirju: sulle kiri uue tellimuse korral ning kliendile kirjad tellimuse kättesaamisel, saatmisel, raha tagastamisel või uue konto loomisel. Kui need kohale ei jõua, arvab klient, et midagi on valesti. Õppetund 6.1 seab kirjade kohalejõudmise korda.
Praktikas: nii näeb see WooCommerce’is välja
Theehuis Example’i WordPressi halduses ilmub pärast paigaldamist kolm uut menüüd: WooCommerce (tellimused, kliendid, sätted, olek), Tooted ja Analüütika (uuemates versioonides mõnikord WooCommerce’i all). Menüüs WooCommerce > Olek leiad serverikeskkonna, andmebaasi tabelid, planeeritud tegevused ja logid. Seda vaadet läheb sul edaspidi sageli vaja. Sammud on iga majutusteenuse pakkuja juures samad, sest need on WordPressis endas.
Kokkuvõte
- WooCommerce toob kaasa andmed, lehed, protsessid ja kaks programmeeritavat sisendit.
- Tooted on omaette postitustüüp; uutes poodides on tellimused omaette tabelites (HPOS, vaikimisi alates 8.2-st).
- Ostukorv töötab iga külastaja oma seansiga; seepärast ei tohi ostukorv, kassa ja Minu konto vahemällu sattuda.
- Store API on avalik ja näitab seda, mida iga külastaja näeb; REST API peab ilma võtmeta suletud olema.
- Ajastatud ülesanded käivad Action Scheduleri ja WP-Croni kaudu; kirjad on osa tellimisprotsessist.
Test (quiz)
Ülesanne
Ülesanne A1.2: Kas see sait töötab WooCommerce’iga? Sisesta domeen, vali jah või ei ning kirjuta üles, millist tõendit nägid (näiteks "generator" või "wc/store/v1"). Programm laadib avalehe, loeb REST-indeksi (/wp-json/, ainult nimeruumide loend) ja küsib aadressi /wp-json/wc/store/v1/products?per_page=1. See tunneb WooCommerce’i ära meta generator-i järgi, milles on WooCommerce, nimeruumi wc/store/v1 järgi REST-indeksis, töötava Store API järgi, kaustast /wp-content/plugins/woocommerce/ pärit failide järgi või body-klassi woocommerce järgi. Roheline: sinu valik on õige ja sinu tõend esineb päistes, HTML-is, REST-indeksis või Store API vastuses; siis näed ka toodete arvu ja valuutat. Oranž: sinu valik on õige, kuid sinu tõendit me ei leia. Punane: sinu valik ei ole õige. Proovi kõigepealt oma poega ja seejärel mõne poega, mida tunned. Ostukorvi ei panda midagi ja midagi ei saadeta.
Lisalugemist
Kui sammud on haldusliideses, kehtivad need WebOké kohta; teiste pakkujate juures toimib see sarnaselt.
- Tasuta WordPressi kursus 1.2: Mootorikatte all: veebiserver, PHP ja andmebaas
- Tasuta WordPressi kursus 1.3: Failid, wp-config ja andmebaas
- Tasuta WordPressi kursus 4.2: Lehed, postitused, rubriigid ja sildid
- High-Performance Order Storage (developer.woocommerce.com, inglise keeles): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, inglise keeles): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (inglise keeles): https://actionscheduler.org/
