Nefunkční custom order status ve WooCommerce

V říjnu byla vydána aktualizace WooCommerce, která v sobě měla jednu nepříjemnou změnu a to odlišný přístup k definování statusu objednávky. Bohužel je tato změna zpětně nekompatibilní a řada funkcí, nebo pluginů, které toto v sobě mají, může být nefunkční.

Na to, že tvůrci pluginů budou hned upravovat své produkty se nemůžete spolehnout, viz. tady . Náprava naštěstí není složitá, i když mi to chvíli zabralo, než jsem na to přišel.

Původní vytvoření custom order status byl ve vytvoření nového termu. V podstatě stačilo použít tuto funkci

function add_custom_status(){
    $term = get_term_by( 'name', 'Custom status', 'shop_order_status' );
    if ( ! $term ) {
        wp_insert_term( 'Custom status', 'shop_order_status' );
    }
   }

V polovině září se však použití termu změnilo na status postu. Objednávky ve WooCommerce jsou vlastně custom post type a jsou tak ukládány do tabulky wp_posts (wp_ dle aktuálního prefixu). A stavy objednávek tak byly taxonomie pro custom post type.
V rámci zjednodušení přístupu ke stavům, se vývojáři rozhodli vytvořit custom post statusy, které budou mít prefix wc. Takže objednávka ve stavu čekající, má v nyní post status wc-pending. A v tom je zakopaný pes.

Custom order status ve WooCommerce nově vytvoříte takto

  add_action( 'init', 'register_custom_order_status', 5 );
 
  function register_custom_order_status(){
  register_post_status( 'wc-control', array(
'label'                     => _x( 'Custom status', 'Order status', 'woocommerce' ),
'public'                    => true,
'exclude_from_search'       => false,
'show_in_admin_all_list'    => true,
'show_in_admin_status_list' => true,
'label_count'               => _n_noop( 'Control order <span class="count">(%s)</span>', 'Control order <span class="count">(%s)</span>', 'woocommerce' )
) );
    }
Čtěte  WooCommerce Bankovní převod
function register_custom_order_status(){ register_post_status( 'wc-control', array( 'label' => _x( 'Custom status', 'Order status', 'woocommerce' ), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Control order <span class="count">(%s)</span>', 'Control order <span class="count">(%s)</span>', 'woocommerce' ) ) ); }

Samozřejmě všude, kde programátoři použili pro výpis objednávek s vlastním statusem, je potřeba upravit funkce, aby místo termu používaly post_status.

Doufám, že vám tip pomůže, protože na webu jsou nyní dohledatelné spíše starší návody.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Related posts

2 Comments

  1. Tomáš Kocifaj

    Nj, co se dá dělat. Když je něco špatně napsaný a je třeba to napsat konečně „správně“, musí padat hlavy :-) Aneb, když se kácí les hold občas můžou lítat třísky ;-)

    Reply
  2. Maxx

    Mam dotaz k tomuto pluginu, instalace uplne v pohode.
    kdyz dam prudukt jako jednoduchy vse funguje
    ale kdyz sem dal prudukt s variantami (jedna se o velikosti trik) tak mi v adminu ukazuje celkem pocet skladem, ale kdyz si otevru stranky tak mam pouze moznost vyberu velikost a pak se nic nestane, nezobrazuje se tlacitko pridat do kosiku ani stavy u jednotlivych velikosti…

    nevite co s tim? predem dekuji

    Reply

Leave a Reply

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Chcete mít přehled o dění ve světě WordPressu?

Přímo do vašeho emailu

Pravidelný přehled o novinkách, trendech a událostech, které se točí kolem WordPressu. Souhrn toho nejzajímavějšího od nás i ze zahraničí.