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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
add_filter( 'woocommerce_package_rates', 'nascondi_spedizione_in_base_classe', 10, 2 ); function nascondi_spedizione_in_base_classe( $rates, $package ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) { return; } foreach( $package['contents'] as $package_item ){ $product_id = $package_item['product_id']; $_product = wc_get_product( $product_id ); if( $_product->get_shipping_class_id() != 17834 ){ unset($rates['flat_rate:7']); break; } } return $rates; } |
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.