Come nascondere lo stato dell'ordine in WooCommerce

Pubblicato: 2020-11-12

WooCommerce Nascondi lo stato dell'ordine Vuoi nascondere gli stati degli ordini principali nel tuo negozio WooCommerce? Di recente, un cliente ha voluto che nascondessi alcuni degli stati degli ordini nel suo negozio WooCommerce. In questo post, vedrai come rimuovere facilmente alcuni stati degli ordini e come crearne di personalizzati.

WooCommerce Nascondi lo stato dell'ordine

Per vari motivi, potresti voler nascondere alcuni degli stati degli ordini principali. Tuttavia, la versione predefinita di WooCommerce ti consente di contrassegnare gli ordini con uno dei seguenti stati completati, in elaborazione, in attesa di pagamento, in attesa, rimborsati, annullati o non riusciti.

Molti plug-in ti consentono di gestire lo stato degli ordini e uno di questi è il plug-in " WooCommerce Order Status Manager " al prezzo di $ 49. Gestore dello stato dell'ordine WooCommerce

Questa potrebbe essere una soluzione costosa per il tuo negozio, ma c'è un modo semplice per farlo. Nella versione corrente di WooCommerce, gli stati degli ordini vengono salvati come stato post personalizzato, proprio come la bozza, pianificata o pubblicata per i post.

Come nascondere lo stato dell'ordine

Detto questo, diamo un'occhiata a come nascondere lo stato dell'ordine in WooCommerce utilizzando uno snippet di codice. Per controllare i messaggi di stato dell'ordine predefiniti, accedi al tuo sito WordPress e accedi alla Dashboard come utente amministratore. Quindi, fai clic su WooCommerce > Ordini . Vedrai questo: stato dell'ordine back-end

Questi messaggi vengono visualizzati anche nel front-end quando un cliente tenta di effettuare un ordine. È possibile accedervi facendo clic su Il mio account > Ordini, come mostrato di seguito: stato dell'ordine front-end

Passaggi per nascondere gli stati degli ordini principali

Vale la pena ricordare che quando nascondi gli stati degli ordini principali, assicurati che non ci siano prodotti con quello stato. Inoltre, dovresti assicurarti che il tuo negozio WooCommerce non utilizzi quello stato da nessuna parte, perché può causare errori. Ad esempio, se non prevedi di effettuare rimborsi nel tuo negozio WooCommerce, puoi nascondere lo stato di rimborso.

Il motivo per cui non possiamo rimuovere tutti gli stati degli ordini principali è che i plug-in utilizzano gli stati degli ordini, anche quelli che non utilizzi nel tuo flusso di lavoro. I plugin come i gateway di pagamento presuppongono sempre che siano presenti gli stati degli ordini principali. Se non ci sono, si romperanno

Ecco i passaggi che devi seguire:

  1. Accedi al tuo sito WordPress e accedi alla Dashboard come utente amministratore.
  2. Dal menu Dashboard, fai clic su Menu Aspetto > Menu Editor temi . Quando viene aperta la pagina Editor temi, cerca il file delle funzioni del tema per aggiungere la funzione per nascondere gli stati degli ordini principali nel tuo negozio WooCommerce.
  3. Aggiungi il seguente codice al file functions.php:
 /*

 * Rimozione degli stati degli ordini principali

 * @param array $wc_statuses_arr Array di tutti gli stati degli ordini sul sito web

 */

funzione njengah_remove_order_statuses($wc_statuses_arr){

            // In lavorazione

            if( isset( $wc_statuses_arr['wc-processing'] ) ) { // se esiste

                        unset($wc_statuses_arr['wc-processing']); // rimuoverlo dall'array

            }

            // Rimborsato

            if( isset( $wc_statuses_arr['wc-refunded'] ) ){

                        unset($wc_statuses_arr['wc-refunded']);

            }

            // In attesa

            if( isset( $wc_statuses_arr['wc-on-hold'] ) ){

                        unset($wc_statuses_arr['wc-on-hold']);

            }

            // Fallito

            if( isset( $wc_statuses_arr['wc-failed'] ) ){

                        unset($wc_statuses_arr['wc-failed']);

            }

            // In attesa di Pagamento

            if( isset( $wc_statuses_arr['wc-pending'] ) ){

                        unset($wc_statuses_arr['wc-in attesa']);

            }

            // Completato

            //if( isset( $wc_statuses_arr['wc-completato'] ) ){

            // unset($wc_statuses_arr['wc-completato'] );

            //}

            // Annullato

            //if( isset( $wc_statuses_arr['wc-cancellad'] ) ){

            // unset($wc_statuses_arr['wc-cancelled'] );

            //}

            restituisce $wc_statuses_arr; // restituisce gli stati dei risultati

}

add_filter('wc_order_statuses', 'njengah_remove_order_statuses');
  1. Questo è il risultato sul front end: nascondere gli stati degli ordini
  2. Per aggiungere uno stato dell'ordine personalizzato, aggiungi il seguente codice nel file functions.php:
 /**

* Registra il nuovo stato con ID "wc-njengah-shipment" ed etichetta "In attesa di spedizione"

*/

funzione njengah_register_waiting_shipment_status() {
register_post_status( 'wc-njengah-shipment', array(

'label' => 'In attesa di spedizione',

'pubblico' => vero,

'show_in_admin_status_list' => vero, // mostra conteggio Tutto (12) , Completato (9) , In attesa di spedizione (2) ...

'label_count' => _n_noop( 'In attesa di spedizione <span class="count">(%s)</span>', 'In attesa di spedizione <span class="count">(%s)</span>' )

) );
}

add_action('init', 'njengah_register_waiting_shipment_status');

/*

* Aggiungi lo stato registrato all'elenco degli stati degli ordini WC

* @param array $wc_statuses_arr Array di tutti gli stati degli ordini sul sito web

*/

funzione njengah_add_status ($ wc_statuses_arr ) {
$new_statuses_arr = array();

// aggiungi il nuovo stato dell'ordine dopo l'elaborazione

foreach ( $ wc_statuses_arr as $ id => $ etichetta ) {

$new_statuses_arr[ $id ] = $etichetta;

if ( 'wc-completed' === $id ) { // dopo lo stato "Completato".

$new_statuses_arr['wc-njengah-shipment'] = 'In attesa di spedizione';

}

}
restituisce $nuovi_stati_arr;

// se lo stato dell'ordine non ti interessa, puoi rimuovere le righe 21-32 e decommentare le seguenti 35-36

// $wc_statuses_arr['wc-njengah-shipment'] = 'In attesa di spedizione';

// restituisce $wc_statuses_arr;
}

add_filter('wc_order_status', 'njengah_add_status');
  1. Questo è il risultato: aggiungi lo stato dell'ordine personalizzato

Conclusione

In questo post, hai visto come nascondere gli stati degli ordini principali. Tuttavia, è importante notare che lo stato dell'ordine che desideri eliminare non viene utilizzato da nessuna parte nel tuo negozio, perché può causare errori. Inoltre, ho condiviso come aggiungere lo stato dell'ordine personalizzato. Se non hai dimestichezza nella gestione del codice, contatta uno sviluppatore WordPress qualificato.

Articoli simili