WooCommerce je e-commerce platforma, kterou používám v projektech na WordPressu, když potřebují skutečnou transakční funkcionalitu, nikoli pouze publikování obsahu.
Používám WooCommerce pro internetové obchody, produktové katalogy, pokladní procesy, integrace plateb, správu objednávek a vlastní e-commerce workflow postavená nad WordPressem.
WooCommerce pro mě není jen plugin, který přidá nákupní košík.
Je to aplikační platforma s vlastním datovým modelem, životním cyklem, API, systémem rozšiřitelnosti a provozními požadavky.
Produkční WooCommerce obchod musí zůstat spolehlivý i ve chvíli, kdy pracuje se skutečnými zákazníky, skutečnými objednávkami a skutečnými platbami.
Jak používám WooCommerce
WooCommerce používám například pro:
- internetové obchody,
- produktové katalogy,
- varianty produktů,
- košík a checkout,
- integrace platebních bran,
- konfiguraci dopravy,
- daně,
- správu objednávek,
- zákaznické účty,
- transakční e-maily,
- vlastní produktová data,
- vlastní chování checkoutu,
- integrace REST API,
- automatizovaná workflow,
- e-shopy postavené v Bricks Builderu,
- produktová data rozšířená pomocí ACF.
WooCommerce obvykle kombinuji s WordPressem, PHP, Bricks Builderem, Advanced Custom Fields, JavaScriptem a vlastní funkcionalitou pro WordPress.
WooCommerce jako aplikační platforma
WooCommerce běží nad WordPressem, ale e-commerce web má jiné požadavky než běžný obsahový web.
Obchod pracuje se stavem, který může vypadat například takto:
Produkty
↓
Košík
↓
Checkout
↓
Platba
↓
Objednávka
↓
Vyřízení
Každý přechod je důležitý.
Vizuální chyba na běžné obsahové stránce může být nepříjemná.
Chyba v checkoutu může zákazníkovi zabránit dokončit nákup.
To zásadně mění můj přístup k vývoji.
Architektura produktů
Produkty by měly být modelovány podle toho, co se skutečně prodává.
WooCommerce podporuje například:
- jednoduché produkty,
- variabilní produkty,
- virtuální produkty,
- produkty ke stažení.
Produktový model volím podle potřeb daného podnikání, místo abych každý produkt nutil do stejné struktury.
Architektura produktů ovlivňuje:
- cenotvorbu,
- skladové zásoby,
- varianty,
- checkout,
- vyřízení objednávek,
- administraci.
Správné nastavení této struktury hned na začátku výrazně usnadňuje další vývoj.
Produktová data
Produkt ve WooCommerce může obsahovat mnohem více než jen název a cenu.
V závislosti na konkrétním obchodě mohou produktová data zahrnovat:
- popis,
- obrázky,
- kategorie,
- atributy,
- varianty,
- SKU,
- skladové zásoby,
- informace o dopravě,
- vlastní metadata.
Smysluplná data raději reprezentuji strukturovaně, než abych důležité informace vkládal do libovolného obsahu page builderu.
Strukturovaná produktová data lze následně znovu využít v:
- produktových šablonách,
- filtrování,
- feedech,
- API,
- automatizaci.
Variabilní produkty
Variabilní produkty jsou užitečné tehdy, když má jeden obchodní produkt více konfigurací, které lze samostatně zakoupit.
Může jít například o rozdíly v:
- velikosti,
- formátu,
- konfiguraci,
- dalších volitelných atributech.
Každá varianta může mít vlastní:
- cenu,
- skladovou zásobu,
- SKU,
- dostupnost.
Strukturu variant navrhuji pečlivě, protože špatně uspořádaný katalog může být obtížně spravovatelný jak pro zákazníky, tak pro administrátory.
Atributy produktů
Atributy jsou užitečné tehdy, když je třeba vlastnosti produktů reprezentovat systematicky.
Používám je pro informace, které mají být dostupné pro:
- varianty,
- filtrování,
- porovnávání produktů,
- strukturované zobrazení.
Rozlišuji mezi informací, která představuje skutečně znovupoužitelný atribut, a informací, která má zůstat pouze popisným obsahem.
Kategorie produktů a taxonomie
Kategorie produktů a další taxonomie používám k vytvoření smysluplné hierarchie katalogu.
Dobře navržená taxonomie podporuje:
- navigaci,
- filtrování,
- SEO,
- administraci,
- interní vztahy.
Nevytvářím nahodilé struktury kategorií jen proto, že to WooCommerce umožňuje.
Hierarchie by měla odpovídat tomu, jak katalog vnímají a chápou zákazníci.
Vlastní produktová pole
Některé produkty vyžadují více informací, než nabízejí standardní pole WooCommerce.
Produktový model mohu rozšířit pomocí vlastních metadat.
Podle projektu to mohou být například pole ACF nebo vlastní administrační funkcionalita WooCommerce.
Příklady mohou zahrnovat:
- technické specifikace,
- externí identifikátory,
- vlastní štítky,
- doplňková média,
- konfiguraci specifickou pro daný produkt.
Frontend pak může tato data vykreslovat dynamicky, aniž by redaktoři museli ručně znovu sestavovat rozložení každé produktové stránky.
Bricks Builder
WooCommerce často kombinuji s Bricks Builderem, pokud e-shop potřebuje výrazně přizpůsobené rozhraní.
Bricks může tvořit prezentační vrstvu pro:
- produktové stránky,
- produktové archivy,
- rozhraní košíku,
- rozložení checkoutu,
- zákaznické sekce.
WooCommerce zůstává zodpovědný za e-commerce logiku.
Bricks řídí prezentaci.
Tyto odpovědnosti odděluji.
Dynamické šablony WooCommerce
Dávám přednost dynamickým šablonám před ručním navrhováním jednotlivých produktových stránek.
Typická architektura může vypadat takto:
Produkt WooCommerce
↓
Strukturovaná produktová data
↓
Šablona Bricks
↓
Vykreslená produktová stránka
Přidání dalšího produktu se pak stává prací s obsahem, nikoli novým designovým projektem.
Pro rostoucí katalogy je tento přístup výrazně lépe udržovatelný.
Advanced Custom Fields
ACF může WooCommerce vhodně doplňovat, pokud produkty nebo související obsah potřebují další strukturované informace.
Například:
WooCommerce
→ e-commerce data
ACF
→ doplňková doménově specifická data
Bricks
→ prezentace
Vyhýbám se duplicitě dat, která již správně spravuje WooCommerce.
Vlastní pole by měla produktový model rozšiřovat, nikoli jej znovu vytvářet.
Architektura košíku
Košík představuje dočasný transakční stav.
Musí zvládat operace jako:
- přidávání produktů,
- změny množství,
- odebírání položek,
- uplatňování slev,
- výpočet celkových částek.
Vlastní funkcionalita košíku by měla respektovat stav a výpočetní mechanismy WooCommerce.
Nevytvářím na frontendu paralelní cenovou nebo košíkovou logiku, která by se mohla rozcházet se serverem.
Autoritativním zdrojem zůstává server.
Checkout
Checkout je jednou z nejcitlivějších částí e-commerce aplikace.
Kombinuje:
- informace o zákazníkovi,
- stav košíku,
- dopravu,
- daně,
- platbu,
- vytvoření objednávky.
V checkoutu omezuji zbytečné úpravy na minimum.
Každá úprava představuje další bod, který může potenciálně narušit konverzi nebo zpracování platby.
Pokud je vlastní chování nutné, integruji jej prostřednictvím podporovaných mechanismů rozšíření WooCommerce.
Validace checkoutu
Validace na straně klienta zlepšuje použitelnost, ale odeslaná data checkoutu musí vždy validovat také server.
Prohlížeč lze manipulovat.
I legitimní požadavek může dorazit v neočekávaném stavu.
Vstupní data checkoutu proto považuji za nedůvěryhodný vstup na straně serveru.
Důležité požadavky musí být vynucovány na serverové úrovni.
Vlastní pole checkoutu
Některé obchody potřebují při checkoutu získat doplňkové informace.
Vlastní pole přidávám pouze tehdy, pokud představují data skutečně nezbytná pro:
- vyřízení objednávky,
- obchodní procesy,
- požadavky zákazníka.
Každé další pole zvyšuje tření v nákupním procesu.
Checkout by neměl sbírat informace jen proto, že by se možná někdy mohly hodit.
Platby
U zpracování plateb dávám přednost zavedeným integracím platebních bran před vlastní manipulací s citlivými platebními údaji.
Platební brána může podporovat například:
- platební karty,
- digitální peněženky,
- bankovní platby,
- regionální platební metody.
WooCommerce koordinuje workflow objednávky a platby, zatímco samotnou finanční transakci zpracovává poskytovatel platební služby.
Stav platby
Samotné zobrazení děkovné stránky zákazníkovi neurčuje autoritativní stav platby.
Platební workflow může zahrnovat:
- úspěšnou platbu,
- čekající platbu,
- neúspěšnou platbu,
- zrušenou platbu,
- zpožděné potvrzení.
Vlastní business logiku stavím nad skutečným stavem objednávky a platby ve WooCommerce, nikoli nad předpoklady založenými jen na navigaci ve frontendu.
Webhooks
Externí poskytovatelé plateb a další služby mohou komunikovat asynchronně.
Zákazník může zavřít prohlížeč, zatímco poskytovatel platby transakci stále dokončuje.
I proto je server-to-server komunikace prostřednictvím webhooků v moderních e-commerce systémech důležitá.
Aplikace by neměla být závislá výhradně na tom, že se zákazník vrátí na konkrétní stránku.
Životní cyklus objednávky
Objednávka není jen jeden databázový záznam.
Prochází vlastním životním cyklem.
V závislosti na obchodě může zahrnovat stavy jako:
Čekající
→ Zpracovává se
→ Dokončeno
s alternativními cestami pro:
Selhalo
Zrušeno
Vráceno
Vlastní automatizaci napojuji na smysluplné přechody stavů objednávek, nikoli na libovolné návštěvy stránek.
Metadata objednávky
Objednávky mohou potřebovat další informace specifické pro dané podnikání.
Může jít například o:
- identifikátory externích systémů,
- metadata vyřízení objednávky,
- stav zpracování,
- vlastní informace o zákazníkovi.
Tyto informace ukládám tak, aby zůstaly svázané s objednávkou a byly programově dostupné.
High-Performance Order Storage
Moderní instalace WooCommerce mohou používat vyhrazenou architekturu ukládání objednávek namísto toho, aby s objednávkami zacházely jako s běžnými příspěvky WordPressu.
To mění jeden důležitý vývojářský předpoklad.
Vlastní kód pro WooCommerce by měl pracovat přes API WooCommerce a neměl by zbytečně předpokládat, ve kterých konkrétních databázových tabulkách jsou informace o objednávkách uloženy.
To zajišťuje lepší kompatibilitu s postupně se vyvíjející architekturou úložiště WooCommerce.
CRUD API WooCommerce
Pro doménové objekty WooCommerce, jako jsou objednávky a produkty, preferuji tam, kde je to vhodné, podporovaná objektová API WooCommerce.
Koncepčně:
Aplikační logika
↓
API WooCommerce
↓
Aktuální implementace úložiště
namísto:
Aplikační logika
↓
Předpokládaná databázová tabulka
První přístup vytváří výrazně bezpečnější hranici.
Interní způsob ukládání dat se může vyvíjet, aniž by bylo nutné přepisovat každou integraci.
REST API
WooCommerce poskytuje API, která umožňují externím systémům pracovat s daty obchodu.
API integrace používám pro workflow zahrnující:
- produkty,
- objednávky,
- zákazníky,
- skladové zásoby,
- synchronizaci,
- automatizaci.
WooCommerce se tak může stát součástí většího systému, nikoli izolovaným webem.
Externí aplikace
WooCommerce obchod může komunikovat se softwarem napsaným v mnoha různých technologiích.
Například:
WooCommerce
↓
REST API
↓
Automatizace v Pythonu
nebo:
Externí systém
↓
API
↓
WooCommerce
To může podporovat:
- synchronizaci produktů,
- reporting,
- zpracování objednávek,
- workflow skladových zásob.
Integrace by měla používat jasně definovaný API kontrakt namísto přímého přístupu do databáze WordPressu.
Store API
Zákaznicky orientovaná e-commerce rozhraní mají jiné požadavky než administrační integrace.
Frontend obchodu může potřebovat přístup například k informacím o:
- produktech,
- košíku,
- checkoutu.
Chování API pro zákaznickou část koncepčně odděluji od privilegovaného administračního přístupu.
Veřejná storefront API nesmějí zpřístupnit citlivé informace o objednávkách nebo zákaznících jen proto, že k nim jiné WooCommerce API přístup mít může.
Autentizace
Administrativní přístup k API vyžaduje správnou autentizaci.
Přihlašovací údaje je nutné považovat za tajné informace.
Neměly by být:
- vložené do veřejného JavaScriptu,
- commitnuté do Gitu,
- zpřístupněné v HTML,
- zbytečně zapisované do logů.
Pokud operace vyžaduje privilegované přihlašovací údaje, patří na důvěryhodný server.
Oprávnění API
Integrace by měla získat pouze taková oprávnění, která skutečně potřebuje.
Pokud systém potřebuje pouze číst informace o produktech, zbytečné oprávnění k zápisu zvyšuje riziko.
Princip nejmenších oprávnění aplikuji všude, kde to integrační mechanismus umožňuje.
Webhooky a automatizace
WooCommerce může být součástí automatizovaných workflow při výskytu důležitých událostí.
Příklady mohou vypadat takto:
Nová objednávka
↓
Externí zpracování
↓
Aktualizovaný stav objednávky
nebo:
Aktualizovaný produkt
↓
Synchronizace
↓
Externí systém
Tato workflow navrhuji tak, aby zvládala opakované pokusy a opakovaně doručené události.
Automatizace by neměla předpokládat, že každá událost dorazí přesně jednou.
Idempotence
E-commerce integrace musí počítat s rizikem duplicitního zpracování.
Například dvojí přijetí stejné externí události by nemělo automaticky:
- vytvořit dvě zásilky,
- odeslat dva požadavky na vyřízení objednávky,
- duplikovat transakci.
Tam, kde by opakované provedení mohlo způsobit škodu, navrhuji operace jako idempotentní nebo explicitně sleduji stav zpracování.
Skladové zásoby
Skladové zásoby potřebují jednoznačný zdroj pravdy.
WooCommerce může spravovat skladové množství produktů i jednotlivých variant.
Pokud skladové zásoby současně řídí i jiný systém, musí synchronizace jasně definovat, který systém je autoritativní.
Dva systémy, které nezávisle mění stejnou skladovou hodnotu bez jasného modelu vlastnictví, mohou velmi rychle vytvářet chybnou dostupnost.
Nadměrný prodej
Více zákazníků se může současně pokusit koupit stejné omezené skladové množství.
Skladovou dostupnost proto nevnímám jen jako vizuální informaci zobrazenou na produktové stránce.
Autoritativní kontrola dostupnosti musí být součástí transakčního workflow.
E-commerce systémy musí počítat se souběžností.
Doprava
Konfigurace dopravy může záviset na:
- lokalitě zákazníka,
- vlastnostech produktu,
- hodnotě objednávky,
- třídách dopravy,
- dostupných dopravcích.
Model dopravy konfiguruji podle skutečných požadavků na vyřízení objednávek.
U složité dopravní logiky dávám přednost explicitním pravidlům před hromaděním překrývajících se pluginů, jejichž výsledné chování je obtížné předvídat.
Daně
Nastavení daní může záviset na jurisdikci, poloze zákazníka a typu produktu.
Daňové nastavení považuji za kritickou obchodní konfiguraci, nikoli za pouhé vizuální nastavení obchodu.
Pokud jsou daňová pravidla složitá nebo právně významná, potřebné podmínky musí dodat obchodník nebo odpovídající odborný zdroj.
Implementace pak musí tyto požadavky přesně odrážet.
Kupóny a slevy
Propagační akce mohou ovlivnit:
- ceny produktů,
- celkové částky objednávek,
- dopravu,
- výpočet daní.
Pokud je to možné, používám zavedené mechanismy WooCommerce namísto vytváření odděleného frontendového systému slev.
Autoritativní celkovou částku objednávky by měl počítat server.
Cenotvorba
Ceny zobrazované na frontendu musí zůstat konzistentní s výpočty v checkoutu.
Vyhýbám se samostatné klientské cenové logice, která se může časem odchýlit od skutečného výpočetního jádra WooCommerce.
JavaScript může zlepšovat interakci, ale o transakci rozhoduje server.
Zákaznické účty
WooCommerce může zákazníkům poskytovat funkce uživatelského účtu.
V závislosti na obchodě mohou zahrnovat:
- objednávky,
- adresy,
- údaje o účtu,
- stahování.
Rozhraní účtů podle potřeby upravuji, ale vždy při zachování správné autorizace.
Uživatel smí přistupovat pouze k informacím, které je oprávněn zobrazit.
Nákup bez registrace
Ne každý obchod musí vynucovat vytvoření účtu.
Nákup bez registrace konfiguruji podle skutečných obchodních požadavků.
Omezení zbytečného tření spojeného se zakládáním účtu může nákupní proces zjednodušit, zatímco jiné projekty mohou přihlášené zákazníky skutečně potřebovat.
Architektura by měla vycházet z produktového modelu a potřeb obchodu, nikoli z jednoho univerzálního pravidla.
Transakční e-maily
WooCommerce generuje e-maily například při událostech jako:
- nové objednávky,
- zpracovávané objednávky,
- dokončené objednávky,
- refundace.
Transakční komunikaci podle potřeby upravuji, ale vždy ji vážu na skutečný stav objednávky.
E-mail by neměl být jediným záznamem o tom, co se stalo.
Objednávka ve WooCommerce zůstává autoritativním transakčním objektem.
Úpravy v PHP
WooCommerce nabízí rozsáhlé možnosti rozšiřování prostřednictvím PHP.
Vlastní PHP používám například pro:
- business pravidla,
- chování checkoutu,
- zpracování objednávek,
- vlastní produktová data,
- integrace.
Dávám přednost podporovaným hookům, filtrům a API před úpravami souborů jádra WooCommerce.
Změny v jádře se obtížně udržují a mohou při aktualizaci zmizet.
Hooky a filtry
Systém hooků WooCommerce umožňuje vlastní logice reagovat na e-commerce události a měnit chování platformy.
Hooky používám jako cílené body rozšíření, nikoli jako důvod duplikovat celé subsystémy WooCommerce.
Příklady mohou zahrnovat:
- reakce na změny stavů objednávek,
- úpravu zobrazovaných dat,
- přidání vlastního zpracování.
Vlastní chování udržuji centralizované a zdokumentované.
Obchod obsahující desítky nevysvětlených snippetů se velmi rychle stává obtížně udržovatelným.
Bloky a moderní WooCommerce
Moderní WooCommerce stále častěji používá bloková rozhraní pro košík, checkout a produkty.
Při implementaci vlastní funkcionality s tím počítám.
Starší předpoklady vycházející z klasických PHP šablon nebo starších checkout hooků nemusí automaticky platit pro každé moderní blokové rozhraní.
Dávám proto přednost podporovaným mechanismům rozšíření a kompatibilitu ověřuji, místo abych předpokládal, že úprava funguje všude.
JavaScript
JavaScript je užitečný pro rozšiřování rozhraní WooCommerce například o:
- dynamické ovládací prvky,
- asynchronní požadavky,
- interaktivní konfiguraci produktů,
- okamžitou zpětnou vazbu v rozhraní.
JavaScriptové vylepšení držím oddělené od autoritativní transakční logiky.
Zákazník může frontendový kód upravit.
Kritická pravidla pro ceny, oprávnění a objednávky proto patří na server.
Bezpečnost
E-commerce weby jsou mimořádně citlivé, protože zpracovávají informace o zákaznících a objednávkách.
Používám defenzivní vývojové postupy pro WordPress, jako jsou:
- validace vstupů,
- sanitizace,
- escapování výstupu,
- kontroly oprávnění,
- ověřování nonce,
- bezpečná autentizace API.
Zároveň minimalizuji množství citlivých dat, se kterými musí vlastní funkcionalita pracovat.
Méně zbytečně zpracovávaných citlivých dat znamená méně zbytečných rizik.
Rozsah PCI
U karetních plateb dávám přednost zavedeným poskytovatelům plateb a integracím, které omezují množství surových platebních údajů, s nimiž musí instalace WooCommerce přímo pracovat.
Vlastní kód by neměl shromažďovat údaje z platebních karet jen proto, že je to technicky možné.
Platební architektura by měla minimalizovat vystavení citlivým finančním datům.
Soukromí
WooCommerce ukládá osobní údaje spojené s transakcemi.
Vlastní funkcionalita by měla shromažďovat pouze informace, které jsou skutečně potřebné.
Zohledňuji například:
- dobu uchovávání,
- exporty,
- procesy mazání,
- logy,
- externí integrace.
Odeslání zákaznických dat do jiné služby vytváří další hranici zpracování dat, které je potřeba rozumět.
Výkon
E-commerce weby kombinují:
- dynamické relace,
- stav košíku,
- produktové dotazy,
- zápisy do databáze,
- platební integrace.
Výkon je proto složitější problém než pouhé cachování čistě statického webu.
Optimalizuji například:
- produktové dotazy,
- přístup k databázi,
- doručování obrázků,
- skripty,
- šablony,
- rozšíření třetích stran.
Nepředpokládám, že samotná page cache vyřeší výkon WooCommerce.
Cachování
Cachování musí rozlišovat mezi veřejným stavem a stavem specifickým pro konkrétního zákazníka.
Produktový archiv může být velmi dobře cachovatelný.
Košík konkrétního zákazníka je ale jiný případ.
Nesprávné cachování může způsobit závažné e-commerce chyby, například zobrazení stavu patřícího jiné relaci.
Cache proto používám s ohledem na dynamické chování WooCommerce.
Výkon databáze
Větší obchody mohou vytvářet významnou databázovou zátěž.
Sleduji zejména:
- dotazy nad objednávkami,
- dotazy nad produkty,
- využití metadat,
- indexy,
- naplánované akce,
- chování rozšíření.
Problémy s výkonem často nevznikají pouze v jádru WooCommerce, ale v interakci více rozšíření.
Naplánované akce
E-commerce workflow často vyžadují úlohy na pozadí.
Může jít například o:
- zpracování,
- synchronizaci,
- úlohy související s e-maily,
- práci související s předplatným,
- integrace třetích stran.
Při diagnostice problémů ve WooCommerce sleduji neúspěšné nebo opakovaně retryované úlohy na pozadí.
Navenek normálně fungující e-shop může mít pod povrchem rozbité asynchronní procesy.
Výběr pluginů
WooCommerce má velmi rozsáhlý ekosystém rozšíření.
To je výhoda, ale každé další rozšíření zároveň přidává:
- kód,
- databázovou aktivitu,
- požadavky na aktualizace,
- možné problémy s kompatibilitou.
Neinstaluji automaticky plugin pro každou drobnou úpravu.
Před jeho přidáním zvažuji, zda lze požadavek bezpečně vyřešit existující funkcionalitou WooCommerce nebo cílenou vlastní implementací.
Kompatibilita rozšíření
E-commerce pluginy zasahují do některých z nejdůležitějších částí obchodu.
Než se na konkrétní rozšíření spolehnu, posuzuji jeho kompatibilitu s:
- aktuální verzí WooCommerce,
- WordPressem,
- architekturou checkoutu,
- ukládáním objednávek,
- dalšími kritickými pluginy.
Plugin, který na jedné produktové stránce zdánlivě funguje správně, může přesto ovlivňovat checkout nebo zpracování objednávek jinde.
Aktualizace
WooCommerce obchody vyžadují opatrný přístup k aktualizacím.
Aktualizace mohou ovlivnit:
- šablony,
- checkout,
- platební brány,
- vlastní PHP,
- rozšíření.
U významných produkčních obchodů preferuji postup:
Záloha
↓
Staging / testování
↓
Aktualizace
↓
Ověření checkoutu
↓
Produkce
namísto slepého aktualizování kritické e-commerce infrastruktury.
Staging
Staging prostředí je pro e-commerce mimořádně cenné.
Umožňuje testovat změny bez narušení provozu skutečných zákazníků.
Staging používám například pro:
- významné aktualizace pluginů,
- změny šablon,
- úpravy checkoutu,
- změny platebních integrací.
Při synchronizaci databází zůstávám opatrný, protože produkce může obsahovat nové objednávky, které ve stagingu neexistují.
Zálohy
Záloha WooCommerce musí chránit více než jen obsah stránek.
Databáze může obsahovat:
- objednávky,
- zákazníky,
- konfiguraci produktů,
- nastavení obchodu.
Zálohování a obnovu databáze považuji za provozní požadavky.
Strategie zálohování má smysl pouze tehdy, pokud je skutečně možné data obnovit.
Logování
Logy jsou důležité pro diagnostiku problémů souvisejících s:
- platbami,
- externími API,
- webhooky,
- úlohami na pozadí,
- selhanými objednávkami.
Uchovávám užitečné technické informace, ale zároveň se vyhýbám zbytečnému zpřístupňování citlivých zákaznických nebo autentizačních dat.
Dobré logy mohou být rozdílem mezi pochopením příčiny selhání platby a pouhým hádáním.
Zpracování chyb
Externí služby selhávají.
Platby selhávají.
API mohou vypršet na timeoutu.
E-maily mohou selhat.
E-commerce systém musí tyto výsledky reprezentovat explicitně.
Vyhýbám se architekturám, ve kterých jeden neúspěšný externí požadavek zanechá objednávku v neurčitém stavu.
Podle situace by systém měl být schopen:
- operaci zopakovat,
- zaznamenat selhání,
- upozornit administrátora,
- bezpečně se zotavit.
Monitoring
U důležitých obchodů řeším provozní chování i po nasazení.
Mezi relevantní oblasti mohou patřit:
- selhání checkoutu,
- chyby plateb,
- neúspěšné naplánované akce,
- selhání API,
- růst databáze.
Skutečnost, že je obchod technicky online, ještě neznamená, že je jeho nákupní workflow zdravé.
SEO
Produktová architektura WooCommerce ovlivňuje také viditelnost ve vyhledávačích.
Zohledňuji:
- názvy produktů,
- popisy,
- kategorie,
- interní prolinkování,
- kanonickou strukturu,
- strukturovaná produktová data,
- výkon.
Nevytvářím velké množství taxonomických nebo filtrovacích stránek s nízkou hodnotou bez zvážení, zda mají být indexovány.
Strukturovaná produktová data
E-commerce obsah těží z předvídatelných strukturovaných dat.
Informace o produktech by měly, pokud je to možné, vycházet ze skutečných vlastností produktů WooCommerce.
Šablony, integrace a strukturované značení tak mohou produkt reprezentovat konzistentněji.
Přístupnost
E-commerce rozhraní musí zůstat použitelná s:
- ovládáním z klávesnice,
- asistenčními technologiemi,
- větším textem,
- různými způsoby vstupu.
Zvláštní pozornost věnuji:
- volbám produktů,
- ovládání množství,
- validačním chybám,
- akcím v košíku,
- polím checkoutu.
Zákazník nesmí být zablokován v dokončení nákupu jen proto, že bylo rozhraní navrženo pouze pro uživatele myši.
Mobilní e-commerce
Významná část interakcí s obchodem může probíhat na mobilních zařízeních.
E-commerce rozhraní navrhuji s ohledem na:
- dostatečně velké dotykové cíle,
- dobře čitelné formuláře,
- kompaktní navigaci,
- jasnou hierarchii checkoutu,
- vhodné typy vstupních polí.
Zejména checkout musí zůstat jednoduchý i na malé obrazovce.
Konverze a technická kvalita
Optimalizace konverzí a technická kvalita spolu souvisejí.
Checkout, který je:
- pomalý,
- nepřehledný,
- rozbitý na mobilu,
- plný zbytečných polí
vytváří obchodní problémy stejně jako technické.
Nákupní zkušenost proto považuji za součást inženýrské práce.
Vlastní business logika
Některé projekty potřebují e-commerce pravidla nad rámec standardní konfigurace.
Může jít například o:
- podmíněnou dostupnost,
- specializované vyřízení objednávek,
- integraci s externími daty,
- vlastní zpracování objednávek.
Taková pravidla udržuji v jasně definovaném kódu, místo abych je rozprostřel mezi mnoho nesouvisejících vizuálních podmínek.
Business logika by měla zůstat dohledatelná.
Vyhýbání se úpravám jádra
Soubory jádra WooCommerce neupravuji kvůli implementaci chování specifického pro konkrétní projekt.
Takové změny jsou křehké a mohou být při aktualizaci přepsány.
Používám:
- hooky,
- filtry,
- extension API,
- vlastní pluginy,
- integraci na úrovni šablony nebo aplikace
podle toho, kam daná úprava z hlediska odpovědnosti patří.
Vlastní pluginy
Pokud funkcionalita WooCommerce nabývá většího rozsahu, dávám přednost samostatnému cílenému pluginu před hromaděním velkého množství nesouvisejícího kódu uvnitř šablony.
E-commerce logika by neměla zmizet jen proto, že se změní vzhled webu.
Oddělení prezentace od business logiky vytváří dlouhodobě odolnější architekturu.
WooCommerce a WordPress REST API
WooCommerce staví na širší platformě WordPressu.
Pro vlastní integrace mohu použít:
- API WooCommerce,
- WordPress REST API,
- vlastní endpointy.
Správná volba závisí na tom, zda se operace týká:
- e-commerce objektů,
- obecných dat WordPressu,
- funkcionality specifické pro projekt.
Dávám přednost API navrženému pro danou doménu namísto toho, abych každou integraci nutil přes jeden generický endpoint.
WooCommerce a automatizace
WooCommerce lze integrovat s automatizačními systémy například pro:
- zpracování objednávek,
- synchronizaci dat,
- aktualizaci metadat,
- generování reportů.
Typické workflow může vypadat takto:
Objednávka WooCommerce
↓
API / Webhook
↓
Automatizace
↓
Externí zpracování
↓
Aktualizace WooCommerce
Na tato workflow pohlížím jako na distribuované systémy.
Každá hranice může selhat nezávisle, proto jsou důležité retry mechanismy, validace a logování.
WooCommerce v mém technologickém stacku
WooCommerce běžně používám společně s technologiemi jako:
- WordPress,
- PHP,
- Bricks Builder,
- Advanced Custom Fields,
- WordPress REST API,
- REST API,
- JavaScript,
- HTML a CSS,
- SQL,
- Git.
WooCommerce poskytuje e-commerce jádro, zatímco okolní WordPress stack zajišťuje správu obsahu, prezentaci a vlastní aplikační logiku.
Proč používám WooCommerce
WooCommerce používám tehdy, když projekt potřebuje flexibilitu WordPressu společně s vyspělým e-commerce systémem.
Poskytuje zavedené modely pro produkty, košíky, checkout, objednávky, platby a zákaznické účty a zároveň zůstává velmi dobře rozšiřitelný prostřednictvím PHP a API.
Hlavní výhodou není jen to, že WooCommerce umožňuje rychle vytvořit základní internetový obchod.
Podstatné je, že platformu lze rozšířit do podoby obchodu odpovídajícího konkrétním obchodním požadavkům, aniž by bylo nutné stavět celé e-commerce jádro od nuly.
Tato flexibilita zároveň přináší odpovědnost.
Úpravy e-commerce systému musí respektovat transakční stav, bezpečnost, kompatibilitu, výkon a budoucí aktualizace.
Takto k WooCommerce přistupuji: nikoli jako k souboru obchodních stránek, ale jako k transakční aplikační infrastruktuře běžící uvnitř WordPressu.