Modul 1 · 1.2
Ako funguje WooCommerce
Modul 1: Skôr než začnete · Čas čítania: 10 min.
Cieľ lekcie: Po tejto lekcii dokážete vysvetliť, ako WooCommerce funguje vo WordPresse a kde sa nachádzajú produkty, objednávky, košík a plánované úlohy.
Kľúčové pojmy: typ produktu, typ príspevku product, objednávky (HPOS), stránky obchodu, relácia a košík, Store API, REST API, Action Scheduler, transakčné e-maily, rozšírenia
Plugin, ktorý z vašej stránky urobí obchod
V kurze WordPress (lekcia 1.2 a 1.3) bolo vysvetlené, ako vzniká stránka: webový server odovzdá požiadavku PHP, PHP načíta WordPress, pluginy a tému, vytiahne údaje z databázy a vytvorí z nich HTML. WooCommerce sa do tohto procesu zapája ako veľký plugin. Prináša štyri veci:
- Údaje: produkty, objednávky, zákazníkov, daňové sadzby, zóny dopravy.
- Stránky: obchod, košík, pokladňu a Môj účet.
- Procesy: košík pre každého návštevníka, platby cez poskytovateľa platieb, e-maily, aktualizáciu skladu, plánované úlohy.
- Vstupy pre programy: Store API a REST API.
Kto vie, kde sa tieto časti nachádzajú, neskôr nájde chybu oveľa rýchlejšie. Preto si ich teraz prejdeme jednu po druhej.
Produkty: vlastný typ príspevku
WordPress pozná typy príspevkov: stránky a články sú dva z nich (kurz WordPress, lekcia 4.2). WooCommerce pridáva typ príspevku product. Produkt je teda, rovnako ako stránka, uložený v tabuľke príspevkov a jeho ďalšie údaje (cena, SKU, sklad, hmotnosť) sú uložené ako metaúdaje. Kategórie a značky produktov sú samostatné taxonómie, oddelené od kategórií a značiek vášho blogu.
Každý produkt má typ produktu. V jadre sú to jednoduchý, zoskupený, externý (odkaz na iný obchod) a variabilný produkt. K tomu môžete zapnúť začiarkavacie políčka virtuálny (nič sa neodosiela) a na stiahnutie (súbor po zaplatení). Variabilný produkt má varianty, napríklad čajník v troch farbách; každý variant je samostatná položka s vlastnou cenou a vlastným skladom. Modul 3 sa tomu venuje podrobnejšie.
Objednávky: vlastné tabuľky (HPOS)
V minulosti WooCommerce ukladal objednávky tiež ako príspevky. Pri vyťažených obchodoch to bolo pomalé, pretože objednávky a články blogu zdieľali tú istú veľkú tabuľku. Preto vzniklo HPOS (High-Performance Order Storage): objednávky vo vlastných tabuľkách, napríklad wc_orders, wc_order_addresses a wc_orders_meta (s predponou tabuliek vašej stránky na začiatku). Od WooCommerce 8.2 (október 2023) je HPOS zapnuté pri každej novej inštalácii. Starší obchod zostáva na pôvodnom spôsobe ukladania, kým ho sami neprepnete v časti WooCommerce > Nastavenia > Pokročilé > Funkcie.
Prečo to potrebujete vedieť? Z troch dôvodov:
- Zálohy: objednávky nie sú vo vašich súboroch, ale v databáze. Záloha bez databázy je pre e-shop bezcenná (lekcia 6.2).
- Rozšírenia: staršie rozšírenie, ktoré ešte číta objednávky ako príspevky, nefunguje s HPOS správne. WooCommerce pri plugine zobrazí upozornenie, ak nie je kompatibilný.
- Obnovenie: ak obnovíte včerajšiu zálohu, dnešné objednávky zmiznú. Pri e-shope je to oveľa horšie ako pri blogu (lekcia 6.2).
Košík: pre každého návštevníka iný
Bežná stránka je pre každého návštevníka rovnaká. Košík nie. Hneď ako návštevník vloží niečo do košíka, WooCommerce spustí reláciu: cookie (wp_woocommerce_session_, za ktorým nasleduje kód) v prehliadači a riadok v tabuľke relácií v databáze. Vďaka tomu e-shop pri ďalšej požiadavke vie, ktorý košík patrí tomuto návštevníkovi.
Dva dôsledky, s ktorými sa neskôr znova stretnete:
- Košík, pokladňa a Môj účet sa nikdy nesmú dostať do cache stránok, inak jeden návštevník uvidí košík iného. WooCommerce na týchto stránkach sám posiela hlavičky, ktoré ukladanie do cache zakazujú (lekcia 6.4).
- E-shop, ktorý spúšťa reláciu pri každom návštevníkovi, aj bez košíka, robí cache stránok celého webu zbytočnou. Je to častá chyba tém a rozšírení.
Stránky obchodu a bloky
Pri inštalácii WooCommerce vytvorí štyri stránky: Obchod, Košík, Pokladňa a Môj účet. Od verzie 8.3 (november 2023) používajú nové inštalácie pre košík a pokladňu bloky; staršie obchody často ešte používajú shortcody. Funguje oboje. Rozdiel je dôležitý pre rozšírenia: rozšírenie, ktoré niečo pridáva do pokladne, musí podporovať variant, ktorý používate vy. Lekcia 2.2 ukazuje, ako to overiť.
Dva vstupy pre programy: Store API a REST API
WooCommerce má dva programovateľné vstupy a rozdiel medzi nimi je dôležitý pre bezpečnosť:
| Store API | REST API | |
|---|---|---|
| Adresa | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Pre koho | Samotný obchod (bloky v prehliadači) a iné frontendy obchodu | Prepojenia: účtovníctvo, sklad, aplikácie |
| Je potrebný kľúč? | Nie, je verejné: produkty a ceny môže čítať ktokoľvek | Áno, API kľúč s právami na čítanie alebo zápis |
| Čo obsahuje | Produkty, ceny, stav skladu, košík aktuálneho návštevníka | Aj objednávky, zákazníkov, prehľady |
To, že je Store API verejné, nie je únik údajov: je to presne to, čo vidí každý návštevník v obchode, len vo forme, ktorú dokážu čítať programy. Vyskúšajte to na vlastnom e-shope: otvorte v prehliadači https://shop.example.com/wp-json/wc/store/v1/products (so svojou adresou) a uvidíte svoje produkty ako JSON. REST API naproti tomu má byť bez kľúča uzavreté. Lekcia 2.4 kontroluje oboje.
V zákulisí: Action Scheduler a e-maily
Veľa práce v e-shope sa nedeje vtedy, keď zákazník čaká, ale neskôr. WooCommerce na to používa Action Scheduler: frontu plánovaných úloh, napríklad zrušenie nezaplatenej objednávky po nastavenom čase, odosielanie webhookov alebo aktualizáciu prehľadov. Frontu nájdete v časti WooCommerce > Stav > Plánované akcie. Tieto úlohy bežia na WP-Cron, ktorý sa spúšťa len vtedy, keď sú na stránke návštevníci. V pokojnom e-shope tak môže práca zostať nevybavená; lekcia 7.3 ukazuje, ako to vyrieši skutočný cron.
Okrem toho WooCommerce posiela transakčné e-maily: e-mail vám pri novej objednávke a e-maily zákazníkovi pri prijatí, odoslaní, vrátení peňazí alebo pri novom účte. Ak neprídu, zákazník si myslí, že je niečo zle. Lekcia 6.1 rieši doručiteľnosť.
V praxi: takto to vyzerá vo WooCommerce
V administrácii WordPressu e-shopu Theehuis Example sa po inštalácii objavia tri nové menu: WooCommerce (objednávky, zákazníci, nastavenia, stav), Produkty a Analytika (v novších verziách niekedy pod WooCommerce). V časti WooCommerce > Stav nájdete serverové prostredie, databázové tabuľky, plánované akcie a protokoly. Túto obrazovku budete neskôr potrebovať často. Kroky sú u každého poskytovateľa hostingu rovnaké, pretože sú priamo vo WordPresse.
Zhrnutie
- WooCommerce prináša údaje, stránky, procesy a dva programovateľné vstupy.
- Produkty sú samostatný typ príspevku; objednávky sú v nových obchodoch vo vlastných tabuľkách (HPOS, predvolene od verzie 8.2).
- Košík funguje s reláciou pre každého návštevníka; preto košík, pokladňa a Môj účet nesmú byť v cache.
- Store API je verejné a zobrazuje to, čo vidí každý návštevník; REST API má byť bez kľúča uzavreté.
- Plánované úlohy bežia cez Action Scheduler a WP-Cron; e-maily sú súčasťou procesu objednávky.
Kvíz
Úloha
Úloha A1.2: Beží táto stránka na WooCommerce? Zadajte doménu, vyberte áno alebo nie a napíšte, aký dôkaz ste našli (napríklad "generator" alebo "wc/store/v1"). Program načíta domovskú stránku, prečíta index REST (/wp-json/, len zoznam namespaces) a vyžiada si /wp-json/wc/store/v1/products?per_page=1. WooCommerce rozpozná podľa meta generator s WooCommerce, namespace wc/store/v1 v indexe REST, funkčného Store API, súborov z /wp-content/plugins/woocommerce/ alebo triedy body woocommerce. Zelená: vaša voľba je správna a váš dôkaz sa nachádza v hlavičkách, v HTML, v indexe REST alebo v odpovedi Store API; zobrazí sa vám aj počet produktov a mena. Oranžová: vaša voľba je správna, ale váš dôkaz sme nenašli. Červená: vaša voľba nie je správna. Vyskúšajte to najprv na vlastnom e-shope a potom na e-shope, ktorý poznáte. Nič sa nevkladá do košíka a nič sa neodosiela.
Ďalšie čítanie
Ak sú uvedené kroky v paneli, platia pre WebOké; u iných poskytovateľov to funguje podobne.
- Bezplatný kurz WordPress 1.2: Pod kapotou: webový server, PHP a databáza
- Bezplatný kurz WordPress 1.3: Súbory, wp-config a databáza
- Bezplatný kurz WordPress 4.2: Stránky, články, kategórie a značky
- High-Performance Order Storage (developer.woocommerce.com, anglicky): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, anglicky): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (anglicky): https://actionscheduler.org/
