
🏪 Stati degli ordini WooCommerce personalizzati: come crearli e configurarli
Abbiamo elaborato l'ordine, ma non esiste uno stato standard per questa fase. «In elaborazione» per l'assemblaggio, «Completato» per la spedizione, e un vuoto nel mezzo. Il negozio sta crescendo e i sette stati predefiniti di WooCommerce non bastano più.
Puoi aggiungere uno stato personalizzato in due modi: con un paio di righe di codice in functions.php o con un plugin già pronto. Entrambi gli approcci funzionano e non rompono la logica standard degli ordini. Di seguito, passo dopo passo, con codice testato e un'alternativa senza programmazione.
💡 Panoramica rapida:
- Quali stati sono inclusi in WooCommerce di default e perché non bastano
- Registrare uno stato personalizzato tramite codice PHP
- Aggiungere più stati e notifiche email personalizzate
- Plugin per gli stati dell'ordine quando il codice non è adatto
- Risposte a domande comuni: HPOS, colori, cancellazione, traduzione
Quali stati sono inclusi in WooCommerce di default
Di default, WooCommerce fornisce sette stati dell'ordine. Ognuno è strettamente legato a un punto specifico del ciclo di vita:
Stato | Cosa significa |
|---|---|
In attesa di pagamento | Ordine creato, pagamento non ricevuto |
In elaborazione | Pagamento ricevuto, ordine in fase di elaborazione |
Completato | Ordine evaso e chiuso |
In sospeso | In attesa di conferma del pagamento |
Annullato | Annullato dal cliente o dall'amministratore |
Rimborsato | Fondi restituiti |
Fallito | Pagamento fallito |
Per un negozio tipico, questo insieme è sufficiente. Ma non appena compare una logica di elaborazione personalizzata, come la produzione su commessa o la consegna in più fasi, sette stati non bastano più. Servono «In assemblaggio», «Consegnato al corriere», «In attesa di acconto» o «Richiede verifica del responsabile».
Passo 1: registrare uno stato personalizzato tramite codice
Prima di WooCommerce 3.0, gli stati usavano la tassonomia shop_order_status e aggiungerne uno nuovo non era banale. Ora è più semplice: uno stato dell'ordine è uno stato del post del custom post type shop_order. Si registra con la sola funzione register_post_status() e il filtro wc_order_statuses.
Il codice va aggiunto al functions.php del tema child. Prima di qualsiasi modifica, fai un backup completo del sito.
1 // Registering a new order status 2 function sdstudio_register_custom_order_status() { 3 register_post_status( 'wc-preparing', array( 4 'label' => 'In assembly', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In assembly (%s)', 11 'In assembly (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 } 16 add_action( 'init', 'sdstudio_register_custom_order_status' ); 17 18 // Adding status to WooCommerce list 19 function sdstudio_add_custom_order_status( $order_statuses ) { 20 $order_statuses['wc-preparing'] = 'In assembly'; 21 return $order_statuses; 22 } 23 add_filter( 'wc_order_statuses', 'sdstudio_add_custom_order_status' );
Dopo aver salvato functions.php, il nuovo stato apparirà nel menu a tendina dello stato dell'ordine nel pannello di amministrazione e nei report di WooCommerce. Il sistema lo vede come uno stato a tutti gli effetti, puoi filtrare gli ordini, cambiare lo stato manualmente e usarlo negli hook.
Cosa succede qui
La funzione register_post_status() crea un nuovo stato del post con il prefisso wc-, questa è una convenzione di WooCommerce. Il parametro label imposta il nome leggibile nel pannello di amministrazione. label_count, tramite _n_noop(), gestisce la visualizzazione corretta dei contatori nell'interfaccia in italiano.
Il filtro wc_order_statuses aggiunge lo stato all'array che WooCommerce usa per costruire l'elenco. Senza questo passaggio, lo stato sarà registrato nel sistema ma non apparirà nel menu a tendina dell'ordine.

Visivamente, il risultato appare esattamente così, il nuovo stato si mostra nell'elenco generale insieme a quelli standard.
Passo 2: aggiungere più stati e notifiche email
Per uno stato, il codice sopra funziona perfettamente. Se ne servono diversi, basta duplicare register_post_status() all'interno della stessa funzione e aggiungere una voce all'array $order_statuses. Per esempio, per un negozio con produzione su commessa:
1 function sdstudio_register_multiple_statuses() { 2 // Status "In production" 3 register_post_status( 'wc-in-production', array( 4 'label' => 'In production', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In production (%s)', 11 'In production (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 16 // Status "Ready to ship" 17 register_post_status( 'wc-ready-to-ship', array( 18 'label' => 'Ready to ship', 19 'public' => true, 20 'exclude_from_search' => false, 21 'show_in_admin_all_list' => true, 22 'show_in_admin_status_list' => true, 23 'label_count' => _n_noop( 24 'Ready to ship (%s)', 25 'Ready to ship (%s)', 26 'sdstudio' 27 ), 28 ) ); 29 } 30 add_action( 'init', 'sdstudio_register_multiple_statuses' ); 31 32 function sdstudio_add_multiple_statuses( $order_statuses ) { 33 $order_statuses['wc-in-production'] = 'In production'; 34 $order_statuses['wc-ready-to-ship'] = 'Ready to ship'; 35 return $order_statuses; 36 } 37 add_filter( 'wc_order_statuses', 'sdstudio_add_multiple_statuses' );
Nota: l'identificatore dello stato (il primo argomento di register_post_status) inizia sempre con wc-. Senza questo prefisso, WooCommerce non rileverà lo stato.
Notifiche email per stati personalizzati
Di default, WooCommerce non invia email quando si passa a uno stato personalizzato. Per abilitare le notifiche, aggiungi il filtro woocommerce_email_actions:
1 function sdstudio_add_custom_status_email( $email_actions ) { 2 $email_actions[] = 'woocommerce_order_status_wc-preparing'; 3 $email_actions[] = 'woocommerce_order_status_wc-in-production'; 4 return $email_actions; 5 } 6 add_filter( 'woocommerce_email_actions', 'sdstudio_add_custom_status_email' );
Dopo questo, puoi configurare il template dell'email in WooCommerce → Impostazioni → Email, il nuovo stato apparirà nell'elenco dei trigger per la personalizzazione. Il template si crea nel tema child nel percorso woocommerce/emails/, il file si nomina seguendo lo schema customer-<status>.php.
Plugin per gli stati dell'ordine: quando il codice non è adatto
Il codice non è l'unica strada. Se non vuoi modificare functions.php o hai bisogno di cambiare spesso gli stati, ci sono i plugin. Due opzioni principali:
WooCommerce Order Status Manager, l'estensione ufficiale di WooCommerce. Aggiunge un'interfaccia per creare e modificare gli stati direttamente dal pannello di amministrazione: WooCommerce → Impostazioni → Stati dell'ordine. Supporta notifiche email, icone, colori e importazione/esportazione degli stati. A pagamento, incluso in alcuni piani WooCommerce.
Flexi Custom Order Status, un plugin gratuito dal catalogo di WordPress.org. Fornisce anch'esso un editor visuale per gli stati, ma con meno funzionalità. Adatto a scenari di base: aggiunto uno stato, assegnato un colore, abilitata un'email.
Quale strada scegliere:
- Ti servono uno o due stati e non hai paura del codice,
functions.phpè sufficiente. - Ci sono molti stati, cambiano spesso o il sito è gestito da un cliente senza competenze tecniche, prendi un plugin.
- Stai usando HPOS (High-Performance Order Storage), entrambi gli approcci funzionano. Gli stati sono ancora basati su
register_post_status(), HPOS non li influenza.
Il breve video qui sopra mostra il processo di aggiunta di uno stato personalizzato in cinque minuti, dall'installazione del plugin al primo utilizzo negli ordini.
⁉️🤔 Domande comuni
Lo stato personalizzato funziona con HPOS?
Sì, completamente. HPOS cambia il modo in cui sono memorizzati i dati dell'ordine, ma non tocca lo stato del post. La funzione
register_post_status()resta il meccanismo principale, il tuo codice funzionerà con HPOS sia abilitato che disabilitato.
Si può impostare un colore per uno stato personalizzato?
Via codice, solo con stili CSS nel pannello di amministrazione: agganciati alla classe
.status-wc-preparinge imposta lo sfondo. Più comodo, via plugin: Order Status Manager e Flexi forniscono la selezione visiva del colore senza una sola riga di codice.
Come cancellare uno stato creato?
Rimuovilo da
register_post_status()e dal filtrowc_order_statuses. Gli ordini con questo stato non spariranno, resteranno nel database, ma lo stato smetterà di apparire nell'elenco a tendina. Prima della cancellazione, sposta tutti gli ordini con lo stato da rimuovere su un altro per non perderli di vista.
Come tradurre gli stati in un'altra lingua?
Il parametro
labelinregister_post_status()accetta una stringa, specifica il nome nella lingua richiesta. Se il sito è multilingue, avvolgi la stringa in una chiamata a__()o_x()con un text domain e traduci via file.po/.mocome qualsiasi altro testo del tema.
Il prefisso wc- è obbligatorio?
Sì. WooCommerce filtra gli stati in base a questo prefisso. Se registri uno stato senza
wc-, non apparirà nel pannello di amministrazione degli ordini. Eccezione, i plugin: aggiungono il prefisso da soli o bypassano il filtraggio con meccanismi interni.
Si può aggiungere uno stato personalizzato senza codice e senza plugin?
Senza codice e senza plugin, no. WooCommerce non fornisce un'interfaccia per creare stati di default. Il percorso minimo senza programmazione, Flexi Custom Order Status gratuito dal catalogo WordPress.org. Installazione con un clic, configurazione via pannello di amministrazione.
Cosa usare per il tuo compito
Gli stati personalizzati dell'ordine sono uno di quei meccanismi di WooCommerce che è facile ignorare finché il negozio è piccolo. Ma non appena compaiono produzione, logistica a fasi o verifica manuale degli ordini, senza di essi il pannello di amministrazione si trasforma in un caos di note vaghe.
- Ti servono uno o due stati e hai già modificato
functions.phpin passato, il codice del passo 1 chiude il compito in cinque minuti. - Ti serve un editor visuale e le impostazioni dei colori per il cliente, Flexi Custom Order Status (gratuito).
- Gli stati fanno parte di un processo aziendale complesso con scenari email e decine di fasi, WooCommerce Order Status Manager (estensione ufficiale).
Verifica quale approccio si adatta meglio a te e aggiungi oggi il tuo primo stato personalizzato. Se usi un metodo diverso o conosci un plugin che non è nell'articolo, condividilo nei commenti.



