[woocommerce] Disabilitare metodi di spedizione in base alla classe di spedizione

Aggiungendo un filtro a functions.php del tema attivo o in qualunque plugin attivo, possiamo escludere alcuni metodi di spedizione in base alla class di spedizione del prodotto.

Immaginiamo di aver aggiunto, tra i metodi di spedizione, qualcosa di simile (nel mio caso Corriere BRT):

E contestualmente abbiamo creato una classe di spedizione chiamata sempre Corriere BRT nel modo seguente:

A questo punto vogliamo che solo i prodotti con la suddetta classe abbiano a disposizione il suddetto metodo di spedizione, che venga invece escluso per quelli senza una classe.

Procuriamoci anzitutto l’ID della classe e quello della spedizione. Utilizzando Chrome, nel mio esempio, clicchiamo col destro sulla classe di spedizione e scegliamo Ispeziona.

Nella finestra di ispezione individuiamo il codice della classe nel modo seguente:

Nel mio caso il valore da salvare è 17834.

Adesso individuiamo l’ID del metodo di spedizione. Lo possiamo recuperare dal carrello sempre utilizzando Ispeziona su Chrome. Andiamo nel carrello dove abbiamo un prodotto con il metodo di spedizione desiderato:

Clicchiamo su Ispeziona ed individuiamo il seguente pezzo di codice:

Nel mio caso il codice è flat_rate:7

Raccolte tutte queste informazioni andiamo a modificare il file functions.php aggiungendo il filtro.

Modifichiamo opportunamente i due codici che ci interessano.

Fatto questo ci accorgeremo come il hook woocommerce_package_rates non viene chiamato sempre, ma solamente al momento in cui si aggiorna la quantità di prodotti nel carrello. Affinché la cosa funzioni correttamente dobbiamo chiamarlo sempre.

Per farlo andiamo su WooCommerce > Impostazioni > Spedizione > Opzioni di spedizione e qui spuntiamo la voce Abilita la modalità di debug

Se abbiamo fatto tutto correttamente adesso il metodo di spedizione è disponibile solo per la classe scelta.

3 thoughts on “[woocommerce] Disabilitare metodi di spedizione in base alla classe di spedizione

  1. Ciao,
    se invece vogliamo disabilitare un metodo di spedizione solo per una classe, come dovrebbe essere la formula?

    1. Il codice di sopra disabilita il metodo di spedizione SOLO per una classe, eventualmente puoi aggiungere altre condizioni IF per più classi.

  2. Il codice funziona bene se nel carrello sono presenti prodotti appartenenti a quella classe. Nel momento in cui si aggiunge un prodotto diverso da quella classe, il calcolo delle spese di spedizione viene “sovrascritto” da quest’ultimo: come se diventassero della stessa classe… non so se mi sono ben spiegato. Come si può risolvere questo problema?

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.