Vuoi modificare lo stato dell’ordine nel tuo shop? Sei nel posto giusto. In questa guida, ti mostreremo come modificare automaticamente lo stato dell’ordine in WooCommerce utilizzando alcuni script PHP. Non preoccuparti se non hai competenze di codice avanzate, spiegheremo ogni script nel dettaglio.

WooCommerce offre molte funzionalità agli sviluppatori, quindi se conosci il codice, puoi effettuare tutti i tipi di personalizzazioni e migliorare il tuo sito e-commerce. Nel seguente tutorial imparerai tutto ciò che devi sapere sullo stato dell’ordine.

Questa è una funzionalità di WooCommerce che può essere molto utile quando si gestisce un gran numero di ordini. Sarà particolarmente utile nell’elenco degli ordini di backend, dove i gestori dei negozi possono facilmente cercare e intraprendere determinate azioni sugli ordini con uno stato specifico.

Senza ulteriori indugi, incominciamo.

Cos’è lo stato dell’ordine WooCommerce?

Lo stato dell’ordine è semplicemente un tag che rappresenta lo stato corrente dell’ordine . È simile a una tassonomia allegata a un post che descrive informazioni specifiche sullo stato corrente di quel post. Ad esempio, quando un cliente preme il pulsante “Effettua ordine”, effettua un ordine nel nostro negozio. Per impostazione predefinita, lo stato dell’ordine è impostato su “Pagamento in sospeso”.

Se il negozio è integrato con un gateway di pagamento come PayPal o Stripe , lo stato predefinito precedente (in sospeso) verrà convalidato e cambierà in ” In attesa ” o ” Fallito ” a seconda del risultato della convalida del gateway di pagamento. Quindi, se il pagamento è stato completato, lo stato dell’ordine cambierà automaticamente in “In lavorazione “, mentre se il pagamento non va a buon fine, il suo stato sarà ” Fallito “.

Come puoi vedere, ciascuno di questi stati ci fornisce informazioni rilevanti sull’ordine. Questa automazione ci consente di sapere se il pagamento dell’ordine è stato completato o meno per consegnare il nostro prodotto al cliente.

La lista di tutti gli tati dell’ordine in WooCommerce

Questi sono tutti gli stati dell’ordine disponibili in WooCommerce e il significato di ciascuno:

  • In attesa di pagamento: L’ordine è stato ricevuto e nessun pagamento è stato registrato. Aspettiamo il pagamento
  • Fallito: il pagamento non è andato a buon fine per qualche motivo. Ciò significa che è stato rifiutato dalla piattaforma di pagamento (es. PayPal) o che richiede un’ulteriore autenticazione (SCA)
  • In lavorazione: Il pagamento è stato ricevuto dal negozio, lo stock del prodotto è stato aggiornato e l’acquisto è nei tempi previsti per la consegna
  • Completato: l’ordine è stato evaso e completato. Questo è l’ultimo stato di un ordine in cui tutto è andato bene
  • In attesa : il cliente non ha effettuato alcun pagamento, quindi l’ordine richiede la conferma da parte del gestore del negozio
  • Cancellato : l’amministratore del negozio o l’utente hanno annullato l’ordine a un certo punto. Ciò non richiede ulteriori azioni, anche se si consiglia di contattare il cliente per capire perché ha annullato l’ordine
  • Rimborsato: l’ordine è stato rimborsato, non sono necessarie ulteriori azioni

Ora che abbiamo capito meglio cos’è lo stato dell’ordine e la sua funzione, vediamo perché può essere una buona idea cambiarlo.

Perché cambiare la funzione di stato dell’ordine predefinita?

Ogni negozio di eCommerce è diverso e ha requisiti specifici. Alcuni negozi online potrebbero non utilizzare affatto lo stato dell’ordine o potrebbero non utilizzarli tutti. Ad esempio, se gli acquirenti non possono restituire i prodotti, il negozio potrebbe non utilizzare lo stato Rimborsato . 

Inoltre, potrebbero esserci alcuni casi in cui la funzione di stato dell’ordine predefinito non sia sufficiente e il negozio necessiti di uno stato personalizzato o di una soluzione automatizzata per la gestione dello stato degli ordini.

In questi casi, la personalizzazione del comportamento dello stato dell’ordine è un’ottima soluzione per migliorare la gestione del negozio. In questo modo, il negozio eCommerce non dovrà aggiornare manualmente lo stato dell’ordine in ogni singolo caso. 

Ciò aiuterà i proprietari dei negozi a risparmiare tempo e consentirà loro di concentrarsi su cose più importanti per migliorare le proprie attività.

Come cambiare lo stato dell’ordine in WooCommerce

A questo punto, è importante capire che lo stato dell’ordine cambia dinamicamente quando WooCommerce è integrato con un gateway di pagamento come PayPal, Payoneer, Stripe e così via. Tieni presente che se modifichi manualmente lo stato quando non è previsto, puoi interrompere il metodo di pagamento presente nel tuo negozio e i clienti non saranno in grado di seguire il processo di acquisto.

Per capire meglio cosa faremo, diamo un’occhiata a come funziona il flusso di stato dell’ordine:

Stati degli ordini in woocommerce

Come puoi vedere nel grafico sopra, la prima fase dello stato di un ordine è ” In sospeso “. Subito dopo, il gateway di pagamento convalida se l’utente può completare il pagamento e cambia il suo stato in ” In attesa “, quindi in ” Lavorazione ” quando il pagamento viene completato con successo. In caso contrario, si trasformerà in ” Fallito “.

Dopo questo, WooCommerce non farà nient’altro. Il gestore del negozio dovrebbe contrassegnare l’ordine come ” Completato ” o ” Annullato “. A questo punto, è sicuro modificare lo stato dell’ordine automaticamente (a livello di programmazione) anche se è integrato un gateway di pagamento.

Inoltre, è importante sapere che quando lo stato cambia in “In lavorazione ” o ” Rimborsato “, lo stock dei prodotti coinvolti nell’ordine verrà ricalcolato. Lo stesso accadrà con tutte le statistiche del negozio online relative a quell’ordine.

Ora che abbiamo un’idea chiara di come cambia lo stato dell’ordine, vediamo come modificare lo stato dell’ordine in WooCommerce .

Come modificare automaticamente lo stato dell’ordine in WooCommerce

Diamo un’occhiata ad alcuni script di esempio per modificare lo stato dell’ordine a livello di codice in WooCommerce.

NOTA : Modificheremo alcuni file principali, quindi prima di iniziare, assicurati di eseguire un backup completo del tuo sito . Inoltre, crea un tema child manualmente o utilizzando un plugin se non ne hai ancora uno, in modo da mantenere le tue personalizzazioni anche dopo aver aggiornato il tuo tema. 

Modifica lo stato di tutti gli ordini dopo l’acquisto

Se il tuo negozio eCommerce non è integrato con alcun gateway di pagamento che utilizza lo stato dell’ordine, puoi mettere tutti gli ordini in attesa subito dopo che il cliente ha effettuato un ordine, invece di lasciarlo come “In lavorazione”. Diamo un’occhiata a questo script:

function   CM_change_order_status( $order_id ) {  
                if ( ! $order_id ) {return;}            
                $order = wc_get_order( $order_id );
                if( 'processing'== $order->get_status() ) {
                    $order->update_status( 'wc-on-hold' );
                }
}
add_action('woocommerce_thankyou','CM_change_order_status');

Usiamo l’hook woocommerce_thankyou per attivare la nostra funzione subito dopo che è stato effettuato un ordine e cambiamo lo stato usando update_status().

Come puoi vedere, lo status slug ha un prefisso (WC). Anche se la funzione ha effetto anche senza il prefisso, è consigliabile utilizzarla.

Vale la pena notare che puoi utilizzare qualsiasi altro stato e persino quelli personalizzati invece di “In attesa” regolando il codice.

Modifica lo stato dell’ordine dall’ID ordine

Il seguente script cambierà lo stato di un singolo ordine. Ad esempio, per modificare lo stato dell’ordine dell’ordine 115, utilizziamo il seguente snippet:

add_action('init',function(){
	$order = new WC_Order(115);
        $order->update_status('wc-processing'); 
});

Questo è uno script breve, quindi abbiamo usato una funzione anonima nell’hook 'init'di WordPress.

Nota che questo non ti permetterà di apportare ulteriori modifiche allo stato mentre lo script è abilitato.

Aggiorna lo stato dell’ordine WooCommerce per i clienti di ritorno 

Questo è un altro esempio interessante per cambiare automaticamente lo stato dell’ordine in WooCommerce. Lo script seguente cambierà lo stato dell’ordine in “Completato” solo se l’utente ha un ordine precedente allegato con lo stato “Completato” o “In elaborazione”.

function CM_order_status_returning( $order_id ) {
        // Get this customer orders
         $user_id = wp_get_current_user();
        $customer_orders = [];
        foreach ( wc_get_is_paid_statuses() as $paid_status ) {
            $customer_orders += wc_get_orders( [
                'type'        => 'shop_order',
                'limit'       => - 1,
                'customer_id' => $user_id->ID,
                'status'      => $paid_status,
            ] );
        }
            # previous order exists
            if(count($customer_orders)>0){ 
                     if ( ! $order_id ) {return;}            
                     $order = wc_get_order( $order_id );
                     if( 'processing'== $order->get_status() ) {
                         $order->update_status( 'wc-completed' );
                     }
            }
}
add_action( 'woocommerce_thankyou', 'CM_order_status_returning' );

Questa può essere una buona idea per aggiungere un livello di sicurezza e migliorare l’esperienza di acquisto del cliente di ritorno.

Modifica lo stato dell’ordine su un parametro URL

Questo script di esempio cambierà in uno stato di ordine specifico quando il parametro URL è presente nel browser. Poiché utilizziamo l’hook init di WordPress, lo script funzionerà su qualsiasi pagina del negozio.

Inoltre, modificherà lo stato dell’ordine per l’ultimo ordine dell’utente attualmente connesso. In questo esempio, lo stato dell’ordine cambierà in “Annullato” quando qualsiasi URL ha il parametro “ripristina” .

add_action('init',function(){
    if(isset($_GET['st'])&&!empty($_GET['st']) ):
        $get_url = $_GET['st'];
 
        if($get_url=='revert'):
            $user_id = wp_get_current_user();
            $order = wc_get_customer_last_order($user_id->ID);  
            $order->update_status( 'wc-cancelled' );
        endif;
    endif;
});

Crea uno stato dell’ordine personalizzato

Invece di modificare lo stato di un ordine, in questo esempio creeremo un nuovo stato dell’ordine personalizzato che possiamo utilizzare liberamente. Questa è una buona idea se gli stati esistenti non sono sufficienti o se preferisci crearne uno nuovo per maggiore chiarezza. Una volta creato uno stato dell’ordine personalizzato, puoi utilizzarlo con uno qualsiasi degli script di cui sopra.

Il seguente script registrerà e aggiungerà un nuovo stato all’elenco degli stati dell’ordine. In questo caso, chiameremo il nuovo stato dell’ordine personalizzato “In corso “, ma puoi utilizzare qualsiasi nome desideri semplicemente personalizzando il codice.

// Register new status
function register_in_progress_order_status() {
    register_post_status( 'wc-in-progress', array(
        'label'                     => 'In progressso',
        'public'                    => true,
        'show_in_admin_status_list' => true,
        'show_in_admin_all_list'    => true,
        'exclude_from_search'       => false,
        'label_count'               => _n_noop( 'In progress (%s)', 'In progress (%s)' )
    ) );
}
// Add custom status to order status list
function add_in_progress_to_order_statuses( $order_statuses ) {
    $new_order_statuses = array();
    foreach ( $order_statuses as $key => $status ) {
        $new_order_statuses[ $key ] = $status;
        if ( 'wc-processing' === $key ) {
            $new_order_statuses['wc-in-progress'] = 'In progress';
        }
    }
    return $new_order_statuses;
}
add_action( 'init', 'register_in_progress_order_status' );
add_filter( 'wc_order_statuses', 'add_in_progress_to_order_statuses' );



Stato dell'ordine personalizzato in WooCommerce

Altri modi per modificare lo stato dell’ordine WooCommerce

Se stai cercando modi alternativi per modificare lo stato dell’ordine in WooCommerce, puoi dare un’occhiata ad alcuni plugin. Sfortunatamente, non ci sono molti strumenti gratuiti per questo, ma questi sono alcuni dei migliori:

  • YITH Custom Order Status : uno strumento eccellente per gestire gli stati degli ordini e crearne di personalizzati. È uno dei migliori strumenti sul mercato ma non è economico. Ti costerà 79,99 € all’anno.
  • WooCommerce Order Status Manager : un altro ottimo plugin per aggiungere, rimuovere e modificare lo stato dell’ordine. Puoi anche attivare e-mail in base allo stato degli ordini. Costa 49 dollari l’anno.
  • Custom Order Status for WooCommerce : uno dei migliori strumenti per gestire lo stato dell’ordine in WooCommerce. È un plugin premium che parte da 39 USD all’anno.
  • Ni WooCommerce Custom Order Status : uno dei pochi plugin gratuiti affidabili che ti consente di gestire facilmente lo stato dell’ordine. 

Come visualizzare lo stato degli ordini nel tuo negozio WooCommerce

Il modo più semplice per vedere lo stato degli ordini nel tuo negozio è aprire la dashboard di WooCommerce e andare su OrdiniQuindi, apri qualsiasi ordine e, nella sezione Generale , premi il menu a discesa Stato. Lì vedrai tutti gli ordini nel tuo negozio.

Visualizzare stato degli ordini in WooCommeece

Conclusione

In sintesi, lo stato dell’ordine è un tag che rappresenta lo stato corrente di un ordine. Anche se WooCommerce include alcuni stati predefiniti, personalizzarli può essere una buona idea per coloro che desiderano rimuoverne o aggiungerne di nuovi. Può anche essere una soluzione interessante per le aziende che necessitano di una soluzione automatizzata per la gestione dello stato degli ordini.

In questa guida, abbiamo visto tutti gli stati degli ordini predefiniti e diversi esempi per modificare automaticamente lo stato degli ordini in WooCommerce. Queste sono solo alcune idee, ma c’è molto di più che puoi fare. Ti consigliamo di prendere questi script come base e personalizzarli per il tuo negozio.

Buon lavoro!