WooCommerce (ako aj každá iná e-commerce platforma) využíva stavy objednávok na to, aby zákazníkovi, či predajcovi dal najavo v akom štádiu sa objednávka nachádza. Štandardne ponúka WooCommerce tieto stavy.
- Prijatá
- Čaká na platbu
- Spracováva sa
- Vybavená
- Refundovaná
- Neúspešná
- Zrušená
Niektoré stavy nastavuje samotný WooCommerce, iné nastavuje implementovaná platobná brána, alebo iné pluginy, a niektoré stavy mení správca obchodu manuálne. Často však defaultné stavy objednávok nestačia na to, aby sa v objednávkach udržal potrebný prehľad. Veľmi dobrým príkladom je napríklad WooCommerce obchod, ktorý objednávky exportuje do externého ERP systému v určitom formáte. V takomto prípade nám veľmi dobre poslúži dodatočný stav objednávky – Exportovaná.
Vytvorenie nového stavu
Najprv je potrebné zaregistrovať nový stav objednávky v súbore functions.php:
<?php function register_exported_order_status() { register_post_status( 'wc-exported', array( 'label' => 'Exportovaná', 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Objednávka bola exportovaná', 'Objednávka bola exportovaná' ) ) ); } add_action( 'init', 'register_exported_order_status' ); ?>
Následne musíme novo vytvorený stav pridať do poľa WooCommerce stavov. Často záleží na tom, v akom poradí sú stavy v tomto poli uložené. V našom prípade je rozumné, aby stav „Exportovaná“ mohla objednávka nadobudnúť iba v prípade, že už obsahuje stav „Vybavená“. Nový stav teda pridáme za stav „Vybavená“, ktorý je defaultne uložený ako ‚wc-completed‘.
<?php function add_exported_order_statuses( $order_statuses ) { $new_order_statuses = array(); foreach ( $order_statuses as $key => $status ) { $new_order_statuses[ $key ] = $status; if ( 'wc-completed' === $key ) { $new_order_statuses['wc-exported'] = 'Exportovaná'; } } return $new_order_statuses; } add_filter( 'wc_order_statuses', 'add_exported_order_statuses' ); ?>
V prípade, že vám z akéhokoľvek dôvodu na výslednom poradí stavov nezáleží (nový stav chcete pridať na koniec), postačí vám namiesto funkcie vyššie tento kód:
<?php function add_exported_order_statuses( $order_statuses ) { $order_statuses['wc-exported'] = 'Exportovaná'; return $order_statuses; } add_filter( 'wc_order_statuses', 'add_exported_order_statuses' ); ?>
Stav objednávky potom môžme zmeniť na „Exportovaná“ pomocou WooCommerce administrácie, alebo jednoduchého skriptu (napr. v rámci pluginu):
$order->update_status('wc-exported');
V zozname už vidíme exportované objednávky a automaticky funguje aj filtrácia, či zoradenie. Objednávky sa defaultne zobrazujú bezfarebne (v rovnakej šedej farbe, ako napr. Prijaté objednávky).
V prípade, že si tento stav chcete farebne odlíšiť, aby ste sa v zozname vedeli ľahšie orientovať, stačí vám pridať pár riadkov CSS kódu do administrácie, pomocou hooku „admin_head“:
<?php function my_custom_admin_css() { echo '<style> .status-exported { color: #173e86 !important; background-color: #9cd7fa !important; } </style>'; } add_action('admin_head', 'my_custom_admin_css'); ?>
Výsledok potom môže vyzerať napríklad takto: