Proč byste měli automatizovat stav vyprodaných produktů?
Provozování e-shopu může být časově náročné, zejména pokud máte širokou nabídku produktů. Udržování aktuálních informací o dostupnosti zboží je ke spokojení zákazníků klíčové. Vyprodané produkty, které stále zůstávají publikované, mohou zbytečně zatěžovat váš e-shop a způsobit frustraci zákazníkům, kteří si je chtějí koupit.
Převedením vyprodaných produktů do konceptů tedy vyřešíme hned několik problémů naráz:
- Zmatení zákazníků – Zákazníci teprve po rozkliknutí produktu zjistí, že není dostupný, což může vést k frustraci.
- Zatěžování výkonu e-shopu – Větší množství vyprodaných produktů může zbytečně zpomalit načítání stránek.
- Horší konverzní poměry – Zákazníci mohou mít pocit, že váš e-shop není dobře spravovaný.
Ještě než začnete:
Zkontrolujte, jestli používáte „Child theme“ vaší šablony, protože by se jinak vložený snippet ihned po aktualizaci šablony smazal! (Vzhled > Šablony)
Pokud na vašem webu nepoužíváte child theme, sáhněte po některém z pluginů, pomocí kterého budete mít možnost na web přidávat snippety, které se po aktualizaci šablony neodstraní. (mohu doporučit plugin „Code Snippets„)
Řešení: Automatické přepnutí produktů na koncept pomocí jednoduchého snippetu
- Otevřete administraci WordPressu a přejděte do záložky Vzhled > Editor souboru šablony > functions.php
- Následující kód vložte na konec tohoto souboru a změny uložte
/*převede vyprodané produkty do konceptu*/ add_action('init', function() { $args = array( 'post_type' => 'product', 'posts_per_page' => -1, // Získá všechny produkty 'post_status' => 'publish', // Jen publikované produkty 'meta_query' => array( array( 'key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=' ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $product = wc_get_product(get_the_ID()); // Pokud má produkt 0 kusů na skladě, přepne jej na koncept if ($product->get_stock_quantity() == 0) { $product->set_status('draft'); // Změní stav na koncept $product->save(); } } wp_reset_postdata(); } });
Tento skript se spustí pouze při načtení stránky administrace (ne při každém načítání běžného front-endu e-shopu). Nicméně, u velkého množství produktů může vyhledávání všech publikovaných produktů a jejich kontrola způsobit trochu zátěže při každém načítání administrace, což by mohlo ovlivnit výkon.
Pokud tedy vlastníte eshop s velkým množstvím produktů, a chcete optimalizovat tento proces, doporučuji přidat snippet níže, který bude produkty pravidelně kontrolovat pouze jednou denně:
// Nastavení cron jobu, který spustí kontrolu jednou denně if (!wp_next_scheduled('check_out_of_stock_products')) { wp_schedule_event(time(), 'daily', 'check_out_of_stock_products'); } add_action('check_out_of_stock_products', function() { $args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=' ), ), ); $query = new WP_Query($args); if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $product = wc_get_product(get_the_ID()); if ($product->get_stock_quantity() == 0) { $product->set_status('draft'); // Přepne na koncept $product->save(); } } wp_reset_postdata(); } });