Jedna z věcí, která je WordPressu vyčítáno, potažmo i pluginu WooCommerce, je struktura databáze. V podstatě všechno co u produktů uložíte, jde do tabulky postmeta. Což je kolem 30 záznamů u každého produktu, nebo varianty.
A to nepočítáme další pluginy, transienty a podobně. Velmi lehce se dostanete na 50 položek u každého produktu. K tomu další záznamy pro články, stránky, revize a tak dále. Není divu, že tabulka postmeta bobtná a bobtná a vyjímkou nejsou ani miliony záznamů.
Prvním krokem, jak tento problém řešit, alespoň z části, bylo zavedení CRUD a data-stores pro produkty a objednávky. Tím že se standartizoval způsob získání dat pro produkty, vznikla cesta, jak převést tato data do vlastních tabulek.
V tuto chvíli jsou k dizpozici dva pluginy, jenž umožňují ukládat informace objednávek a produktů do vlastních tabulek a snižovat tak zátěž na databázi. Přestože si můžete říct – mě se to netýká, používám cache plugin a ten návštěvníkovi nabízí uloženou html stránku, tak to platí jen do chvíle, než se zákazník, nebo administrátor přihlásí. Většina pluginů je nastavená tak, že při přihlášení cache vypíná.
Pokud to myslíte s provozováním e-shop na WooCommerce vážně, zkuste otestovat tento plugin, jenž je zatím ve vývoji – https://github.com/woocommerce/woocommerce-product-tables-feature-plugin.
Dřív nebo později bude zaveden do jádra WooCommerce, takže je lepší se připravit a můžete jej používat již nyní.
Upozornění: V žádném případě nedoporučuji, testovat jej na funkčním e-shop a bez záloh databáze. Jde o plugin ve vývoji a za případné škody nesete odpovědnost sami.
Plugin do databáze přidá nové tabulky, udělal jsem vám screeny, aby jste věděli co se vám vytvoří:
Tabulka wc_products
Tabulka wc_product_attributes
Tabulka wc_product_attribute_values
Tabulka wc_product_downloads
Tabulka wc_product_relationships
Doporučená verze WooCommerce – 3.4.7 a vyšší
Minimální verze pro zkoušení 3.0 (2.6 ještě nemá CRUD a data-stores)
Známé bugy:
- v administraci se nemusí zobrazovat náhledy produktů – mělo být odstraněno již ve verzi 3.5.1, zatím není
- pokud vaše custom šablona pro získání obrázku produktu nepoužívá $product->get_image_id, ale has_post_humbnail, obrázek se nenačte
O data stores a CRUD ve WooCommerce budu mluvit na školení pro vývojáře 19.2. v Praze a 21.2. v Brně – https://toret.cz/woocommerce-pro-vyvojare-skoleni/
Potkat mne můžete také na Pražském WordCampu