Posaďte sa do prvej rady

Zaujal vás tento článok? Prihláste sa do nášho newslettra a dostávajte články z nášho blogu medzi prvými.

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).

Zoznam WooCommerce objednávok

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:

Zoznam WooCommerce objednávok s dodatočnými CSS štýlmi
avatar

Autor: Kristián Filo

Web Developer a dizajnér so špecializáciou na WordPress a WooCommerce.

Návrat hore