Come modificare automaticamente lo stato dell'ordine in WooCommerce

Pubblicato: 2021-07-31

Vuoi aggiornare lo stato dell'ordine nel tuo negozio? 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 programmazione avanzate, spiegheremo ogni script in dettaglio.

WooCommerce offre molte funzionalità agli sviluppatori, quindi se hai capacità di programmazione, puoi apportare tutti i tipi di personalizzazioni e migliorare il tuo negozio eCommerce. 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 gestiscono un gran numero di ordini. Sarà particolarmente utile nell'elenco degli ordini di back-end, dove i gestori dei negozi possono facilmente cercare ed eseguire determinate azioni sugli ordini con uno stato specifico.

Senza ulteriori indugi, tuffiamoci dentro.

Qual è lo stato dell'ordine in WooCommerce?

Lo stato dell'ordine è semplicemente un tag di un ordine 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 un 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 attesa) verrà convalidato e cambierà in " In attesa " o " Non riuscito " a seconda del risultato della convalida del gateway di pagamento. Quindi, se il pagamento è stato completato, lo stato dell'ordine passerà automaticamente in "In elaborazione ", 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.

Stato dell'ordine in WooCommerce

Questi sono tutti gli stati degli ordini disponibili in WooCommerce e il significato di ciascuno:

  • Pagamento in sospeso: L'ordine è stato ricevuto e nessun pagamento è stato registrato. Stiamo aspettando il pagamento
  • Fallito: il pagamento non è riuscito per qualche motivo. Ciò significa che è stato rifiutato dalla piattaforma di pagamento (es. PayPal) o che richiede un'ulteriore autenticazione (SCA)
  • Elaborazione: 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
  • Annullato : 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 il motivo per cui 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 aggiornarlo.

Perché modificare la funzione di stato dell'ordine predefinita?

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

Inoltre, potrebbero esserci alcuni casi in cui la funzione di stato dell'ordine predefinita non è sufficiente e il negozio ha bisogno di uno stato personalizzato o di una soluzione automatizzata per la gestione dello stato degli ordini. In questi casi, personalizzare il 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ò consentirà ai proprietari di negozi di risparmiare tempo e consentirà loro di concentrarsi su cose più importanti per migliorare le loro attività.

Come cambia 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 aggiorni lo stato manualmente quando non è previsto, puoi interrompere il metodo di pagamento presente nel tuo negozio e i clienti non saranno in grado di seguire la procedura di acquisto.

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

woocommerce-stato-ordine

Dalla documentazione di WooCommerce

Come puoi vedere nel grafico sopra, la prima fase dello stato dell'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 " Elaborazione " quando il pagamento è stato completato correttamente. In caso contrario, si trasformerà in " Fallito ".

Dopo questo, WooCommerce non farà nient'altro. Il responsabile del negozio dovrebbe contrassegnare l'ordine come " Completato " o " Annullato ". A questo punto, è possibile modificare lo stato dell'ordine automaticamente (in modo programmatico) anche se è integrato un gateway di pagamento.

Inoltre, è importante sapere che quando lo stato cambia in "In elaborazione " 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 aggiornare 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 in modo programmatico in WooCommerce .

NOTA : Modificheremo alcuni file principali, quindi prima di iniziare, assicurati di eseguire un backup completo del tuo sito. Inoltre, crea un tema figlio o usa uno di questi plugin se non ne hai ancora uno, così manterrai le tue personalizzazioni anche dopo aver aggiornato il tuo tema.

Modifica tutto lo stato dell'ordine dopo l'acquisto

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

 funzione QuadLayers_change_order_status ($ order_id) {  
                if ( ! $ order_id ) {ritorno;}            
                $ordine = wc_get_ordine($ordine_id);
                if( 'elaborazione'== $ordine->get_status() ) {
                    $ordine->aggiornamento_stato('wc-in-attesa');
                }
}
add_action('woocommerce_thankyou','QuadLayers_change_order_status');

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

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

woocommerce-stato-ordine-in-attesa

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

Modifica lo stato dell'ordine dall'ID ordine

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

 add_action('init',function(){
	$ordine = nuovo WC_Ordine(115);
        $ordine->aggiornamento_stato('elaborazione-wc'); 
});

Questo è uno script breve, quindi abbiamo utilizzato una funzione anonima 'init' WordPress.

Tieni presente che ciò non ti consentirà di apportare ulteriori modifiche allo stato mentre lo script è abilitato.

Aggiorna lo stato dell'ordine WooCommerce per i clienti abituali

Questo è un altro esempio interessante per modificare 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".

 funzione QuadLayers_order_status_returning($order_id) {
        // Ricevi gli ordini di questo cliente
         $id_utente = wp_get_utente_corrente();
        $ ordini_cliente = [];
        foreach ( wc_get_is_paid_statuses() come $ paid_status ) {
            $customer_orders += wc_get_orders( [
                'tipo' => 'ordine_negozio',
                'limite' => - 1,
                'id_cliente' => $id_utente->ID,
                'stato' => $stato_pagato,
            ] );
        }
            # esiste l'ordine precedente
            if(count($customer_orders)>0){ 
                     if ( ! $ order_id ) {ritorno;}            
                     $ordine = wc_get_ordine($ordine_id);
                     if( 'elaborazione'== $ordine->get_status() ) {
                         $ordine->aggiornamento_stato('wc-completato');
                     }
            }
}
add_action( 'woocommerce_thankyou', 'QuadLayers_order_status_returning');

Questa può essere una buona idea per aggiungere un livello di sicurezza e migliorare l'esperienza di acquisto dei clienti abituali.

Modifica lo stato dell'ordine su un parametro URL

Questo script di esempio passerà a uno stato dell'ordine specifico quando il parametro URL è presente nel browser. Poiché stiamo usando 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" come questo: https://website.com/shop?st=revert

 add_action('init',function(){
    if(isset($_GET['st'])&&!empty($_GET['st']) ):
        $get_url = $_GET['st'];
 
        if($get_url=='ripristina'):
            $id_utente = wp_get_utente_corrente();
            $ordine = wc_get_customer_last_order($id_utente->ID);  
            $ordine->aggiornamento_stato('wc-cancellato');
        finisci se;
    finisci se;
});

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. Dopo aver creato uno stato dell'ordine personalizzato, puoi utilizzarlo con uno qualsiasi degli script precedenti.

Lo script seguente registrerà e aggiungerà un nuovo stato all'elenco dello stato dell'ordine. In questo caso, chiameremo il nuovo stato dell'ordine personalizzato "In corso ", ma puoi utilizzare qualsiasi nome desideri semplicemente personalizzando il codice.

 // Registra nuovo stato
funzione register_in_progress_order_status() {
    register_post_status( 'wc-in-progress', array(
        'etichetta' => 'In corso',
        'pubblico' => vero,
        'show_in_admin_status_list' => vero,
        'show_in_admin_all_list' => vero,
        'exclude_from_search' => falso,
        'label_count' => _n_noop( 'In corso (%s) ', 'In corso (%s) ' )
    ) );
}
// Aggiungi uno stato personalizzato all'elenco dello stato dell'ordine
funzione add_in_progress_to_order_statuses ($ order_statuses) {
    $nuovo_ordine_stati = array();
    foreach ( $ order_statuses as $ key => $ status ) {
        $nuovo_stato_ordine[ $chiave] = $stato;
        if ( 'elaborazione wc' === $chiave ) {
            $new_order_statuses['wc-in-progress'] = 'In corso';
        }
    }
    restituisci $nuovi_stati_di_ordine;
}
add_action('init', 'register_in_progress_order_status');
add_filter('wc_order_statuses', 'add_in_progress_to_order_statuses');



woocommerce-stato-ordine-personalizzato

Altri modi per modificare lo stato dell'ordine WooCommerce

Se stai cercando modi alternativi per aggiornare lo stato dell'ordine predefinito in WooCommerce, puoi controllare 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 USD all'anno.
  • Stato dell'ordine personalizzato per WooCommerce : uno dei migliori strumenti per gestire lo stato dell'ordine in WooCommerce. È un plug-in premium che parte da 39 USD all'anno.
  • Stato dell'ordine personalizzato Ni WooCommerce : uno dei pochi plugin gratuiti affidabili che ti consente di gestire facilmente lo stato dell'ordine.

Come vedere lo stato dell'ordine nel tuo negozio WooCommerce

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

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 vogliono 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 di provare a personalizzarli per il tuo negozio.

Per ulteriori informazioni su come personalizzare il tuo negozio, dai un'occhiata a questi tutorial:

  • Come applicare automaticamente i coupon WooCommerce
  • Modifica la pagina di ringraziamento di WooCommerce in modo programmatico
  • Come personalizzare il modulo di registrazione WooCommerce
  • 3 metodi per testare gli ordini WooCommerce
  • Come aggiungere i filtri dei prodotti AJAX di WooCommerce

Hai aggiornato lo stato dell'ordine nel tuo negozio? Hai avuto problemi a seguire questa guida? Fateci sapere nei commenti qui sotto!