Cum să schimbați automat starea comenzii în WooCommerce

Publicat: 2021-07-31

Doriți să actualizați starea comenzii în magazinul dvs.? Ai venit la locul potrivit. În acest ghid, vă vom arăta cum să schimbați automat starea comenzii în WooCommerce folosind unele scripturi PHP. Nu vă faceți griji dacă nu aveți abilități avansate de codare, vă vom explica fiecare script în detaliu.

WooCommerce oferă dezvoltatorilor multe funcții, așa că, dacă aveți abilități de codare, puteți face tot felul de personalizări și puteți îmbunătăți magazinul de comerț electronic. În următorul tutorial, veți afla tot ce trebuie să știți despre starea comenzii. Aceasta este o caracteristică WooCommerce care poate fi foarte utilă atunci când gestionați un număr mare de comenzi. Va fi util în special pe lista comenzilor backend, unde managerii de magazine pot căuta cu ușurință și pot întreprinde anumite acțiuni asupra comenzilor cu un anumit statut.

Fără alte prelungiri, haideți să trecem direct în ea.

Care este starea comenzii în WooCommerce?

Starea comenzii este pur și simplu o etichetă pe care o are o comandă și care reprezintă starea curentă a comenzii . Este similar cu o taxonomie atașată unei postări care descrie informații specifice despre starea actuală a postării respective. De exemplu, când un client apasă butonul „Plasează comandă”, acesta plasează o comandă în magazinul nostru. În mod implicit, starea comenzii este setată la „Plată în așteptare”.

Dacă magazinul este integrat cu un gateway de plată precum PayPal sau Stripe, starea implicită anterioară (în așteptare) va fi validată și se va schimba în „ În așteptare ” sau „ Eșuat ”, în funcție de rezultatul validării gateway-ului de plată. Apoi, dacă plata a fost finalizată, starea comenzii se va schimba automat în „ Procesare ”, în timp ce dacă plata eșuează, starea acesteia va fi „ Eșuată ”.

După cum puteți vedea, fiecare dintre aceste stări ne oferă informații relevante despre comandă. Această automatizare ne informează dacă plata comenzii a fost finalizată sau nu pentru a livra produsul nostru clientului.

Starea comenzii în WooCommerce

Acestea sunt toate stările comenzilor disponibile în WooCommerce și semnificația fiecăreia:

  • Plată în așteptare: Comanda a fost primită și nicio plată nu a fost înregistrată. Asteptam plata
  • Eșuat: plata a eșuat din anumite motive. Aceasta înseamnă că a fost respins de pe platforma de plată (adică, PayPal) sau că necesită autentificare suplimentară (SCA)
  • Procesare: Plata a fost primită de magazin, stocul produsului a fost actualizat și achiziția este în termen de livrare
  • Finalizat: Comanda a fost onorata si finalizata. Aceasta este ultima stare a unei comenzi în care totul a mers bine
  • În așteptare : clientul nu a efectuat nicio plată, așa că comanda necesită confirmare din partea managerului magazinului
  • Anulat : fie administratorul magazinului, fie utilizatorul a anulat comanda la un moment dat. Acest lucru nu necesită nicio acțiune suplimentară, deși este recomandat să contactați clientul pentru a înțelege de ce a anulat comanda.
  • Rambursat: Comanda a fost rambursată, nu este necesară nicio acțiune suplimentară

Acum că înțelegem mai bine ce este starea comenzii și funcția acesteia, să vedem de ce poate fi o idee bună să o actualizăm.

De ce să schimbați funcția implicită de stare a comenzii?

Fiecare magazin de comerț electronic este diferit și are cerințe specifice. Este posibil ca unele magazine online să nu folosească starea comenzii deloc sau să nu le folosească pe toate. De exemplu, dacă cumpărătorii nu pot returna produsele, este posibil ca magazinul să nu folosească starea de rambursare .

În plus, ar putea exista unele cazuri în care funcția implicită de stare a comenzii nu este suficientă și magazinul are nevoie de o stare personalizată sau de o soluție automată pentru gestionarea stării comenzilor. În aceste cazuri, personalizarea comportamentului stării comenzii este o soluție excelentă pentru a îmbunătăți gestionarea magazinului. În acest fel, magazinul de comerț electronic nu va trebui să actualizeze manual starea comenzii în fiecare caz.

Acest lucru îi va ajuta pe proprietarii de magazine să economisească timp și îi va permite să se concentreze pe lucruri mai importante pentru a-și îmbunătăți afacerile.

Cum se schimbă starea comenzii în WooCommerce

În acest moment, este important să înțelegeți că starea comenzii se schimbă dinamic atunci când WooCommerce este integrat cu o poartă de plată precum PayPal, Payoneer, Stripe și așa mai departe. Rețineți că, dacă actualizați manual starea când nu este așteptat, puteți întrerupe metoda de plată prezentată în magazinul dvs. și clienții nu vor putea urma procesul de cumpărare.

Pentru a înțelege mai bine ce vom face, să aruncăm o privire la modul în care funcționează fluxul de stare a comenzii:

woocommerce-starea-comandă

Din documentația WooCommerce

După cum puteți vedea în graficul de mai sus, prima etapă a stării comenzii este „ În așteptare ”. Imediat după aceea, gateway-ul de plată validează dacă utilizatorul poate finaliza plata și își schimbă starea în „ În așteptare ”, apoi în „ Procesare ”, când plata este finalizată cu succes. În caz contrar, se va transforma în „ Eșuat ”.

După aceasta, WooCommerce nu va face nimic altceva. Managerul magazinului ar trebui să marcheze comanda ca „ Finalizată ” sau „ Anulată ”. În acest moment, este sigur să schimbați automat starea comenzii (programatic), chiar dacă există o poartă de plată integrată.

În plus, este important de știut că atunci când starea se schimbă în „ Procesare ” sau „ Rambursat ”, stocul produselor implicate în comandă va fi recalculat. La fel se va întâmpla cu toate statisticile magazinului online legate de respectiva comandă.

Acum că avem o idee clară despre cum se schimbă starea comenzii, să vedem cum să actualizăm starea comenzii în WooCommerce .

Cum se schimbă automat starea comenzii în WooCommerce

Să aruncăm o privire la câteva exemple de scripturi pentru a schimba starea comenzii în mod programatic în WooCommerce .

NOTĂ : Vom edita câteva fișiere de bază, așa că înainte de a începe, asigurați-vă că faceți o copie de rezervă completă a site-ului dvs. În plus, creați o temă copil sau utilizați oricare dintre aceste pluginuri dacă nu aveți încă unul, astfel încât să vă păstrați personalizările chiar și după actualizarea temei.

Schimbați starea comenzii după cumpărare

Dacă magazinul dvs. de comerț electronic nu este integrat cu nicio poartă de plată care utilizează starea comenzii, puteți pune toate comenzile în așteptare imediat după ce clientul plasează o comandă, în loc să o lăsați ca „Procesare”. Să aruncăm o privire la acest script:

 funcția QuadLayers_change_order_status( $order_id ) {  
                dacă ( ! $id_comanda ) {return;}            
                $comanda = wc_get_order( $comanda_id);
                if( 'procesare'== $comanda->get_status() ) {
                    $comanda->update_status('wc-on-hold');
                }
}
add_action('woocommerce_thankyou','QuadLayers_change_order_status');

Folosim hook-ul woocommerce_thankyou pentru a ne declanșa funcția imediat după ce a fost plasată o comandă și pentru a schimba starea utilizând update_status() .

După cum puteți vedea, melcul de stare are un prefix (WC). Chiar dacă funcția funcționează și fără prefix, este o practică recomandată să o folosești.

woocommerce-starea-comenzii-în așteptare

Este demn de remarcat faptul că puteți utiliza orice alt statut și chiar personalizat în loc de „În așteptare” prin ajustarea codului.

Modificați starea comenzii din ID-ul comenzii

Următorul script va schimba starea unei singure comenzi. De exemplu, pentru a schimba starea comenzii pentru comanda 115, folosim următorul fragment:

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

Acesta este un script scurt, așa că am folosit o funcție anonimă în cârligul 'init' WordPress.

Rețineți că acest lucru nu vă va permite să faceți alte modificări ale stării în timp ce scriptul este activat.

Actualizați starea comenzii WooCommerce pentru clienții care revin

Acesta este un alt exemplu interesant de a schimba automat starea comenzii în WooCommerce. Scriptul de mai jos va schimba starea comenzii la „Finalizată” numai dacă utilizatorul are o comandă anterioară atașată cu starea „Finalizat” sau „În procesare”.

 funcția QuadLayers_order_status_returning( $order_id ) {
        // Obțineți comenzile acestui client
         $user_id = wp_get_current_user();
        $comenzi_client = [];
        foreach ( wc_get_is_paid_statuses() ca $paid_status ) {
            $comenzi_clienți += wc_get_comenzi( [
                'type' => 'shop_order',
                „limită” => - 1,
                'customer_id' => $user_id->ID,
                'status' => $paid_status,
            ]);
        }
            # comandă anterioară există
            if(count($customer_comenzi)>0){ 
                     dacă ( ! $id_comanda ) {return;}            
                     $comanda = wc_get_order( $comanda_id);
                     if( 'procesare'== $comanda->get_status() ) {
                         $comanda->update_status('wc-completed');
                     }
            }
}
add_action( 'woocommerce_thankyou', 'QuadLayers_order_status_returning');

Aceasta poate fi o idee bună pentru a adăuga un nivel de securitate și pentru a îmbunătăți experiența de cumpărături a clienților care revin.

Modificați starea comenzii pentru un parametru URL

Acest exemplu de script se va schimba într-o stare specifică a comenzii atunci când parametrul URL este prezent în browser. Pe măsură ce folosim cârligul init WordPress, scriptul va funcționa pe orice pagină a magazinului.

În plus, va edita starea comenzii pentru cea mai recentă comandă a utilizatorului conectat în prezent. În acest exemplu, starea comenzii se va schimba în „Anulată” atunci când orice adresă URL are parametrul „revert” astfel: https://website.com/shop?st=revert

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

Creați o stare de comandă personalizată

În loc să schimbăm starea unei comenzi, în acest exemplu, vom crea o nouă stare de comandă personalizată pe care o putem folosi în mod liber. Aceasta este o idee bună dacă stările existente nu sunt suficiente sau dacă preferați să creați unul nou pentru mai multă claritate. Odată ce creați o stare de comandă personalizată, o puteți utiliza cu oricare dintre scripturile de mai sus.

Următorul script se va înregistra și va adăuga un nou statut la lista de stare a comenzii. În acest caz, vom numi noua stare de comandă personalizată „ În progres ”, dar puteți folosi orice nume doriți prin simpla personalizare a codului.

 // Înregistrați un nou statut
funcția register_in_progress_order_status() {
    register_post_status( 'wc-in-progress', array(
        'label' => 'În curs',
        „public” => adevărat,
        'show_in_admin_status_list' => adevărat,
        'show_in_admin_all_list' => adevărat,
        'exclude_from_search' => fals,
        'label_count' => _n_noop( 'În desfășurare (%s) ', 'În curs (%s) ' )
    ) );
}
// Adăugați stare personalizată la lista de stare a comenzii
funcția 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'] = 'În curs';
        }
    }
    returnează $new_order_statuses;
}
add_action('init', 'register_in_progress_order_status');
add_filter( 'wc_order_statuses', 'add_in_progress_to_order_statuses');



woocommerce-starea-comenzii-personalizate

Alte modalități de a schimba starea comenzii WooCommerce

Dacă căutați modalități alternative de a actualiza starea implicită a comenzii în WooCommerce, puteți consulta câteva pluginuri. Din păcate, nu există multe instrumente gratuite pentru aceasta, dar acestea sunt unele dintre cele mai bune:

  • YITH Custom Order Status : Un instrument excelent pentru a gestiona stările comenzilor și pentru a crea unele personalizate. Este unul dintre cele mai bune instrumente de pe piață, dar nu este ieftin. Vă va aduce înapoi 79,99 EUR pe an.
  • WooCommerce Order Status Manager : Un alt plugin grozav pentru a adăuga, elimina și edita starea comenzii. De asemenea, puteți declanșa e-mailuri în funcție de starea comenzilor. Costă 49 ​​USD pe an.
  • Starea comenzii personalizată pentru WooCommerce : Unul dintre cele mai bune instrumente pentru a gestiona starea comenzii în WooCommerce. Este un plugin premium care începe de la 39 USD pe an.
  • Starea comenzii personalizată Ni WooCommerce : unul dintre puținele plugin-uri gratuite de încredere care vă permit să vă gestionați cu ușurință starea comenzii.

Cum să vezi starea comenzii în magazinul tău WooCommerce

Cel mai simplu mod de a vedea starea comenzii în magazinul dvs. este să deschideți tabloul de bord WooCommerce și să accesați Comenzi. Apoi, deschideți orice comandă și, în secțiunea General , apăsați pe meniul derulant Stare. Acolo vei vedea toate comenzile din magazinul tău.

Concluzie

Pe scurt, starea comenzii este o etichetă care reprezintă starea curentă a unei comenzi. Chiar dacă WooCommerce include anumite stări implicite, personalizarea acestora poate fi o idee bună pentru cei care doresc să elimine sau să adauge altele noi. De asemenea, poate fi o soluție interesantă pentru companiile care au nevoie de o soluție automată pentru gestionarea stării comenzilor.

În acest ghid, am văzut toate stările implicite ale comenzii și diferite exemple pentru a schimba automat starea comenzii în WooCommerce. Acestea sunt doar câteva idei, dar puteți face mult mai multe. Vă recomandăm să luați aceste scripturi ca bază și să vă jucați pentru a le personaliza pentru magazinul dvs.

Pentru mai multe informații despre cum să vă personalizați magazinul, aruncați o privire la aceste tutoriale:

  • Cum să aplicați automat cupoanele WooCommerce
  • Editați pagina de mulțumire WooCommerce în mod programatic
  • Cum să personalizați formularul de înregistrare WooCommerce
  • 3 metode de testare a comenzilor WooCommerce
  • Cum să adăugați filtre de produs WooCommerce AJAX

Ați actualizat starea comenzii în magazinul dvs.? Ați avut probleme în urma acestui ghid? Spune-ne în comentariile de mai jos!