Jak vytvořit vlastní stav objednávky ve WooCommerce - Affinite.io CZ

WooCommerce při vytváření objednávky, používá několik výchozích stavů, které použije pro označení stavu, v kterém se objednávka nachází. Tyto stavy jdou poměrně jednoduše rozšířit.

Objednávka je technicky post type. To znamená, že má stejné prvky, jako post a pro stavy objednávek se používá post status. Každý post má stavy draft, publish atd. WordPress umožňuje registrovat vlastní stavy pomocí register_post_status.

Toho využívá i WooCommerce a rozšiřuje stavy postů o:

Pending payment (čeká na platbu) – při vytvoření objednávky, když ještě nebyla zpracována platební metoda.

On hold (čeká na vyřízení) – vytvořená objednávka, jsou třeba další kroky, typicky se jedná o bankovní převod, kdy čekáte na peníze, aby jste poslali objednávku zákazníkovi.

Processing (zpracovává se) – stav, kdy je objednávka již ve zpracovávání, ale není dokončená. Používám pro platbu kartou, nebo při odeslání zásilky na dobírku.

Completed (dokončeno) – dokončená objednávka.

Cancelled (zrušeno) – úspěšná objednávka, která byla zrušena.

Failed (selhalo) – neúspěšná objednávka, většinou se jedná o technickou chybu, nebo zrušení platby na platební brány.

Refunded (vráceno) – stav objednávky po vrácení.

O stavech objednávky jsem psal již dříve v návodu k WooCommerce

Registrace stavů objednávky

WooCommerce registruje vlastní stavy postů v souboru wc-class-post-types.php v metodě register_post_types. Zde je nadefinováno pole polí, které jsou pak procházeny a používány jako argumenty pro register_post_status.

Celé nadefinované pole máte k dispozici pomocí filtru woocommerce_register_shop_order_post_statuses .

1. Definování stavu objednávky

Pro definici potřebujete zadat:

  • id stavu – wc-custom-status (stav objednávky musí vždy začínat wc-)
  • label – název stavu – Custom status
  • public – zobrazení stavu postu na frontendu (vždy false pro stav objednávky)
  • exclude_from_search – vyloučení postů z vyhledávání (false)
  • show_in_admin_all_list – zobrazení v adminu (true)
  • show_in_admin_status_list – zobrazení v seznamu stavů (true)
  • label_count – název pro zobrazení počtu objednávek s tímto stavem

2. Přidání stavu do seznamu výchozích stavů

Jako druhý krok, musíme přidat nový stav do seznamu všech stavů ve Woocommerce. Toto se používá například v detailu objednávky, pro vykreslení selectu se stavy objednávek.

WooCommerce má filtr wc_order_statuses, kam vložíte již nadefinované id stavu a název stavu.

3. Přidání do hromadných úprav

Posledním krokem je přidání stavu do hromadných úprav, aby bylo možné v administraci objednávek, hromadně označit více objednávek novým stavem.

Proto se používá filtr bulk_actions-edit-shop_order, kam id bulk akce a její název. Pozor na to, že, nyní již nesmíme použít prefix wc- , ale mark_.

4. Kompletní kód pro vytvoření stavu

Všechny tři kroky pak v kódu vypadají takto:

Tím jste do e-shopu přidali nový vlastní stav, ale většinou není práce u konce, protože na stavy objednávek navazují také další kroky, jako třeba odeslání e-mailu. Také je většinou potřeba přidat tlačítko do akcí objednávek, ale to bude tématem jiného článku.

Další užitečné snippety najdete na stránce Užitečné snippety pro WooCommerce

Unexped token in JSON at position
Unexped token in JSON at position
31 Pro, 2019
Překlad WordPress pluginů pomocí Loco translate
Překlad WordPress pluginů pomocí Loco translate
03 Led, 2020

Komentáře nejsou povoleny.

Looking for something?