Oggi vediamo come implementare costi di spedizione differenti in base al peso stabilito per ogni prodotto. In particolare vedremo come sia possibile inserire 2 tariffe differenti per ogni ordine in base al peso dei prodotti inseriti nel carrello ed in base alla Nazione dove si vuole spedire.
Premessa
Ovviamente ogni prodotto che avete inserito nel vostro store dovrà avere già inserito il suo peso specifico nel campo che trovate di serie in tutte le ultime versioni di WooCommerce.
Inserimento delle zone di spedizione
Per prima cosa dovremo inserire le zone di spedizione, nell’esempio ho inserito varie località specifiche o anche continenti interi.
Una volta inserite tutte le vostre località, che possono essere una oppure anche 20, procediamo, per ognuna, ad inserire 2 metodi di pagamento differenti con prezzi differenti, in questo caso ho inserito 2 tariffe diverse, 1 Standard ed una Extra.
Volendo potete inserire anche più metodi di pagamento differenti, ma nel mio caso volevo che tutti gli ordini inferiori ai 30kg avessero una tariffa Standard, mentre tutti gli altri ordini che superano i 30kg avessero una tariffa Extra e quindi maggiore rispetto alla Standard.
Una volta che avete inserito la tariffa Standard ed Extra, non vi resta che andare a modificarla ed aggiungere per ognuna il proprio prezzo.
Il codice vero e proprio
Ora che abbiamo inserito tutti i dati all’interno di WooCommerce, non ci resta che inserire nel nostro file functions.php o altro file che preferite questo codice, che, come nel nostro caso, non fa altro che applicare la condizione per la tariffa di spedizione sia nel carrello, che nel checkout.
Ora potete testare tutto il vostro sistema, ricordandovi di cambiare i valori nel codice che vi ho appena scritto.
Ciao, ho provato a utilizzare questa funzione ma il sito va down, mi sapresti dire perchè? a te funziona?grazie
Ciao Francesca! No a me questo codice non da nessun problema, puoi provare però a capirne la motivazione, attivando nel wp-config il debug e dirmi che errore viene generato!
Buongiorno,
sai se per caso c’è un modo per aggiungere le spese di spedizione ad un prodotto gratuito?
ho già creato la classe e inserito il costo e associato al prodotto ma ovviamente se il prodotto risulta gratuito non mi mostra le spese di spedizione. Ma a me serve così. Cosa posso fare? Cosa mi posso inventare?
Grazie
Ciao Elena! Certo che puoi farlo, basta creare un prodotto semplice con costo 0, e poi basta mettere le spese di spedizione. WooCommerce lo fa tranquillamente!
Ciao, ho provato e funziona perfettamente!
Unico problema è che questo pezzo di codice va in conflitto con altro inserito precedentemente per spedizione gratuita al raggiungimento soglia:
/*************************************************************************
// SPEDIZIONE GRATUITA AUTOMATICA
**************************************************************************/
function wpspecial_spedizione_gratuita_automatica( $rates, $package ) {
$all_free_rates = array();
foreach ( $rates as $rate_id => $rate ) {
if ( ‘free_shipping’ === $rate->method_id ) {
$all_free_rates[ $rate_id ] = $rate;
break;
}
}
if ( empty( $all_free_rates )) {
return $rates;
} else {
return $all_free_rates;
}
}
add_filter( ‘woocommerce_package_rates’, ‘wpspecial_spedizione_gratuita_automatica’, 10, 2 );
come posso risolverla?
Ciao Andrea, per conflitto dovrei capire esattamente il tipo di errore e così mi è difficile comprendere la problematica. Nel caso avessi bisogno di un intervento questi sono tipi di lavori che svolgo e per i quali nel caso posso intervenire
Ciao miniMAC, intanto grazie per il post, lo trovo molto utile e per me funziona benissimo.
Avrei una domanda: vorrei settare la spedizione a 3 fasce di peso (es: fino ad 1kg; da 1kg a 3kg; da 3kg a 5kg) e utilizzare 1 tariffa unica con le 3 classi di spedizione ed i relativi prezzi. Come viene scritto il codice nel file function.php?
Spero di essermi spiegato, in ogni caso, grazie per i tuoi contributi!
*** EDIT ***
scusa miniMAC, in effetti non è necessario nessun codice su function 🙂
Grazie lo stesso!