Nedávno byl na blogu aktualizován článek o struktuře WordPressu, kterým by bylo vhodné nejprve začít, abychom se nejdříve dokázali orientovat v samotném WordPressu.
Dnes si ukážeme přehled o struktuře WooCommerce databáze, který může komukoliv pracujícím s Woo přijít vhod. Pro ostatní může posloužit alespoň k pochopení základních operací v databázi.
Zjednodušený diagram WooCommerce databáze s aktivním HPOS.
Jak získat přístup k WooCommerce databázi?
Budeme potřebovat přístup k phpMyAdmin, který většinou najdeme v nastavení našeho webhostingu. Levnější hostitelé často používají cPanel. Pro provádění pokročilých SQL dotazů bude potřeba WP-CLI(nástroj pro příkazový řádek).
Tabulky spojené s produkty a objednávky
Při manipulaci s daty tabulek může být zprvu obtížné se v nich orientovat. Mezi nejčastěji používané tabulky v tomto ohledu patří woocommerce_order_items a woocommerce_order_itemmeta, kterým se nejspíše nevyhneme. Při manipulaci s produkty a objednávky bohužel nejsou jediné, které tato data obsahují.
Ve kterých tabulkách najdeme data o produktech?
Pokud v tabulkách posts a postmeta nenajdeme žádné produkty, nejspíše budeme mít povolené HPOS v nastavení WooCommerce(WooCommerce > Nastavení > Pokročilé > Vlastnosti).
HPOS již není závislé na tabulce _posts, a přináší zcela nové a optimalizovanější tabulky.
- wc_product_meta_lookup
- wc_order_product_lookup
- posts
- postmeta
V případě aktivního HPOS již produkty nejsou závislé na tabulkách posts a postmeta. Nově je nahrazují následující tabulky:
- _wc_orders
- _wc_order_addresses
- _wc_order_operational_data
- _wc_orders_meta
Ve kterých tabulkách najdeme data o objednávkách?
- woocommerce_order_items
- woocommerce_order_itemmeta
- posts
- postmeta
- comments
Souhrn všech WooCommerce tabulek:
Následující tabulky jsou automaticky vytvořeny po aktivaci pluginu WooCommerce. U tabulek se ještě bude objevovat prefix, který jsme nastavili při tvorbě databáze(defaultně bývá předpona „wp“, kterou bych z hlediska bezpečnosti nedoporučoval).
- actionscheduler_actions – Ukládá informace o akcích, které budou provedeny plánovačem akcí.
- actionscheduler_claims
- actionscheduler_groups
- actionscheduler_logs – Logy o provádění plánovače akcí
- woocommerce_sessions – Ukládá například data o nákupních košících zákazníků
- woocommerce_api_keys – Ukládá API klíče používané pro REST API
- woocommerce_attribute_taxonomies – Ukládá globální názvy atributů taxonomie pro produkty
- woocommerce_downloadable_product_permissions – Ukládá přístupová oprávnění(udělená po zakoupení) k virtuálním produktům ke stažení
- woocommerce_order_items – Ukládá položky, související s objednávkami
- woocommerce_order_itemmeta – Metadata o položkách objednávky
- woocommerce_tax_rates – Ukládá daňové sazby, které lze definovat v administraci webu
- woocommerce_tax_rate_locations – Ukládá místa(PSČ a města), která jsou spojena s výše uvedenými daňovými sazbami
- woocommerce_shipping_zones – Ukládá přepravní zóny, které lze editovat v oblasti nastavení
- woocommerce_shipping_zone_locations – Ukládá místa spojená s přepravními zónami
- woocommerce_shipping_zone_methods – Ukládá způsoby dopravy spojené s přepravními zónami
- woocommerce_payment_tokens – Ukládá platební tokeny zákazníků
- woocommerce_payment_tokenmeta – Ukládá metadata o platebních tokenech
- woocommerce_log – Obecná tabulka pro řešení logování
- wc_webhooks – Ukládá všechny webhooky, které byly v obchodě nastaveny
- wc_download_log – Ukládá záznamy o stahování digitálních produktů
- wc_product_meta_lookup – Obsahuje informace o metadatech produktů
- wc_tax_rate_classes – Uchovává data o daňových třídách
- wc_reserved_stock – Tabulka slouží například ke sledování návrhu objednávky, produktu a skladového množství.
V souvislosti s WooCommerce přijdou začátkem června nové změny, které zcela odstraní zastaralý „Legacy REST API“! Více se dozvíte zde.
Detaily jednotlivých tabulek
Tabulka: actionscheduler_actions
- action_id – ID
- hook – název akce nebo události
- status – stav akce(například „pending“)
- scheduled_date_gmt – plánované datum a čas akce ve světovém čase
- scheduled_date_local – plánované datum a čas akce v mísítním čase
- args – argumenty, nebo data spojená s akcí, která bude provedena
- schedule – frekvence, s jakou je akce plánována (např. „once“ – jednou, „hourly“ – každou hodinu, atd.)
- group_id – ID skupiny
- attemps – počet pokusů o provedení akce
- last_attempt_gmt – datum a čas posledního pokusu o provedení akce ve světovém čase
- last_attempt_local – datum a čas posledního pokusu o provedení akce v místním čase
- claim_id
- extended_args – rozšíření argumentů a dalších dat spojených s akcí
Tabulka: actionscheduler_claims
- claim_id – ID
- date_created_gmt – datum a čas vytvoření nároku ve světovém čase
Tabulka: actionscheduler_groups
- group_id – ID
- slug
Tabulka: actionscheduler_logs
- log_id – ID
- action_id – ID akce
- message – popis události
- log_date_gmt – datum a čas vytvoření záznamu v logu ve světovém čase
- log_date_local – datum a čas vytvoření záznamu v logu v místním čase
Tabulka: woocommerce_sessions
- session_id – ID
- session_key – klíč, který slouží k identifikaci uživatelské relace
- session_value – určitá hodnota spojena s danou relací
- session_expiry – datum a čas, kdy relace vyprší a bude považována za neplatnou
Tabulka: woocommerce_api_keys
- key_id – unikátní identifikátor každého API klíče
- user_id – identifikátor uživatele, který daný API klíč vytvořil
- description – popis API klíče
- permission – oprávnění nebo práva spojená s API klíčem
- consumer_key – unikátní identifikátor spotřebitele souvisejícího s API klíčem
- consumer_secret – tajný klíč, který spolu s consumer_key slouží k ověření identity spotřebitele
- nonces – je náhodný číselný řetězec, který se používá k prevenci opakovaného použití stejné žádosti
- truncated_key – zkrácený podoba klíče pro zobrazení
- last_access – datum a čas posledního přístupu, nebo použití API klíče
Tabulka: woocommerce_attribute_taxonomies
- attribute_id – ID
- attribute_name – název atributu
- attribute_label – popisek atributu
- attribute_type – typ atributu
- attribute_orderby – způsob řazení produktů podle tohoto atributu
- attribute_public – určuje, zda je daňový atribut veřejně viditelný
Tabulka: woocommerce_downloadable_product_permissions
- permission_id – ID každého oprávnění ke stažení
- download_id – ID stažitelného produktu, ke kterému je toto oprávnění přiřazeno
- product_id – ID produktu, ke kterému se toto oprávnění vztahuje
- order_id – ID objednávky, ve které byl stažitelný produkt zakoupen
- order_key – unikátní klíč objednávky
- user_email – e-mailová adresa uživatele, který má oprávnění ke stažení
- user_id – identifikátor uživatele, ke kterému je oprávnění ke stažení přiřazeno
- downloads_remaining – počet zbývajících stahování povolených tímto oprávněním
- access_granted – datum a čas, kdy bylo oprávnění ke stažení uděleno
- access_expires – datum a čas, kdy oprávnění ke stažení vyprší a již nebude platné
- download_count – celkový počet stahování provedených pomocí tohoto oprávnění
Tabulka: woocommerce_order_items
- order_item_id – ID objednávky
- order_item_name – název položky objednávky
- order_item_type – Typ položky objednávky, který může označovat, zda se jedná o produkt, službu, slevu atd.
- order_id – ID objednávky, ke které položka náleží
Tabulka: woocommerce_order_itemmeta
- meta_id – ID záznamu v metadatech
- order_item_id – ID položky objednávky
- meta_key – Klíč metadat
- meta_value – hodnota metadata, obsahující samotnou informaci
Tabulka: woocommerce_tax_rates
- tax_rate_id – ID každé daňové sazby
- tax_rate_country – země, na kterou se daná daňová sazba vztahuje
- tax_rate_state – stát nebo region v rámci země, ke kterému se daňová sazba vztahuje
- tax_rate – hodnota daňové sazby vyjádřená v procentech
- tax_rate_name – název, nebo popis daňové sazby
- tax_rate_priority – priorita daňové sazby v případě, že existují sazby, které se vzájemně překrývají
- tax_rate_compound – určuje, zda se daná daňová sazba použije i na již zdaněné částky (složená daň)
- tax_rate_shipping – určuje, zda se daná daňová sazba vztahuje na náklady na dopravu
- tax_rate_order – pořadí, ve kterém jsou aplikovány daňové sazby
- tax_rate_class – Třída nebo kategorie daňové sazby
Tabulka: woocommerce_tax_rate_locations
- location_id – ID
- location_code – kód, nebo označení geografického umístění, ke kterému se daňová sazba vztahuje
- tax_rate_id – ID daňové sazby, ke které je toto umístění přiřazeno
- location_type – typ umístění, může být např. „country“ (země), „state“ (stát)…
Tabulka: woocommerce_shipping_zones
- zone_id – ID každé dopravní zóny
- zone_name – název dopravní zóny
- zone_order – pořadí, ve kterém jsou dopravní zóny zobrazeny nebo aplikovány
Tabulka: woocommerce_shipping_zone_locations
- location_id -ID záznamu v tabulce
- zone_id – ID dopravní zóny
- location_code – kód, nebo označení geografického umístění
- location_type – typ umístění(země, stát…)
Tabulka: woocommerce_shipping_zone_methods
- zone_id – ID dopravní zóny, ke které jsou tyto metody přiřazeny
- instance_id – ID každé instance dopravní metody v rámci dané zóny
- method_id – ID konkrétní dopravní metody
- method_order – pořadí, ve kterém jsou tyto metody zobrazeny nebo aplikovány v rámci zóny
- is_enabled – určuje, zda je tato dopravní metoda povolena, nebo zakázána
Tabulka: woocommerce_payment_tokens
- token_id – ID platebního tokenu
- gateway_id – ID platební brány, ke které je tento token přiřazen
- token – samotný platební token nebo kód, který je používán k identifikaci platební karty nebo jiného způsobu platby
- user_id – ID uživatele, ke kterému je tento platební token přiřazen
- type – typ platebního tokenu
- is_default – určuje, zda je tento platební token nastaven jako výchozí pro daného uživatele
Tabulka: woocommerce_payment_tokenmeta
- meta_id – ID záznamu
- payment_token_id – ID platebního tokenu
- meta_key – klíč metadat
- meta_value – hodnora metadat obsahující samostatnou indormaci
Tabulka: woocommerce_log
- log_id – ID zázamu
- timestamp – timestamp události, kdy došlo k logování
- level – úroveň důležitosti nebo závažnosti záznamu
- source – zdroj nebo místo, kde došlo k dané události nebo chybě
- message – textová zpráva nebo popis události nebo chyby
- context – kontext nebo další informace spojené s událostí, které mohou být užitečné při diagnostice
Tabulka: wc_webhooks
- webhook_id – ID webhooku
- status – stav webhooku, například aktivní, nebo deaktivovaný
- name – název webhooku
- user_id – ID uživatele, který vytvořil daný webhook
- delivery_url – URL adresa, na kterou jsou posílána oznámení (payload) událostí
- secret – tajný klíč používaný k ověření autentičnosti webhooku
- topic – určuje, na jakou událost má reagovat
- date_created – datum a čas vytvoření webhooku
- date_created_gmt – datum a čas vytvoření webhooku ve světovém čase
- date_modified – datum a čas poslední úpravy webhooku
- date_modified_gmt – datum a čas poslední úpravy webhooku ve světovém čase
- api_version – verze API používaná pro tento webhook
- failure_count – počet neúspěšných pokusů o doručení webhooku
- pending_delivery – určuje, zda je webhook ve frontě pro odeslání (true/false)
Tabulka: wc_download_log
- download_log_id – ID záznamu
- timestamp – určuje, kdy došlo ke stažení
- permission_id – ID oprávnění ke stažení, které je propojeno s digitálním produktem
- user_id – ID uživatele, který provedl stažení
- user_ip_address – IP adresa uživatele, který provedl stažení
Tabulka: wc_product_meta_lookup
- product_id – ID produktu, ke kterému jsou tyto metainformace přiřazen
- sku – označení pro skladování a sledování zásob
- virtual – určuje, zda je produkt virtuální (true/false), kdy produkt nemá fyzickou podobu
- downloadable – určuje, zda je produkt stažitelný (true/false)
- min_price – nejnižší cena produktu
- max_price – nejvyšší cena produktu
- onsale – určuje, zda je produkt ve slevě (true/false)
- stock_quantity – množství zásob produktu
- stock_status – stav dostupnosti zásob produktu
- rating_count – počet hodnocení produktu
- average_rating – průměrné hodnocení produktu
- total_sales – celkový počet prodaných kusů produktu
Tabulka: wc_tax_rate_classes
- tax_rate_class_id – ID třídy daňových sazeb
- name – název třídy daňových sazeb
- slug
Tabulka: wc_reserved_stock
- order_id – ID objednávky, ke které je rezervované skladové množství přiřazeno
- product_id – ID produktu, pro který je rezervované skladové množství určeno
- stock_quantity – množství produktu, které je rezervováno
- timestamp
- expires – datum a čas, kdy rezervace vyprší a bude uvolněna
Závěr
WooCommerce je jedním z nejrozšířenějších pluginů pro e-shopy ve WordPressu, a proto může být znalost jeho databáze užitečná například při řešení problémů, optimalizaci, nebo při pokročilých úpravách WooCommerce e-shopu.
Rovněž doporučuji přečíst článek o fungování WordPress databáze, pokud jste ještě nečetli.