Aggiornamento di un articolo originale del 6-5-2015, per garantire la compatibilità con le versioni più recenti di WooCommerce.
Se si vendono francobolli, il problema probabilmente non sussiste, ma se per caso i prodotti in catalogo sono più pesanti, come trapani elettrici o forme di formaggio, potrebbe essere necessario porre un limite al peso complessivo dell’ordine.
Magari per non superare eventuali limiti imposto dalla logistica o dal servizio di spedizioni, o per non incappare in aumenti indesiderati delle spese di spedizione.
Qualunque sia il motivo, è possibile impostare il peso massimo di un ordine grazie ad un semplice snippet, con tanto di messaggio di avviso per il cliente.
Il codice che segue, opportunamente modificato, va inserito nel file delle funzioni del tema in uso, e come al solito è sempre meglio se si tratta di un tema child.
In questo esempio, fissiamo un limite massimo di 15 Kg per ordine.
add_action('woocommerce_check_cart_items','check_cart_weight'); function check_cart_weight(){ global $woocommerce; $weight = $woocommerce->cart->cart_contents_weight; if( $weight > 15 ){ wc_add_notice( sprintf( __( 'Il tuo ordine pesa %sKg ma sono consentiti solo 15Kg per ordine', 'woocommerce' ), $weight ), 'error' ); } }
Il limite di peso va definito alla riga 6.
Hai bisogno di aiuto con WooCommerce?
Se hai bisogno di assistenza per il tuo store WooCommerce, o anche solo per mettere in pratica queste istruzioni, contattami!Ovviamente il valore si riferisce all’unità di peso definita nelle impostazioni dei prodotti in WooCommerce, che di default è impostato su Kilogrammi.
Alla riga 6, invece, è possibile personalizzare il messaggio di errore che compare nel carrello.
Superfluo dirlo, ma hai visto mai, è necessario che tutti i prodotti siano impostati correttamente con il loro peso, altrimenti i conti non tornano…
Questo snippet è stato testato su WordPress 5.4.1 e WooCommerce 4.2.0, temi Storefront, Flatsome e Astra Pro.
21 risposte
ciao , ma se al posto di dare un errore , e’ possibile fare in modo che lo script restituisca la spedizione su piu’ colli e quindi il calcolo delle spedizioni diventerebbe piu’ veritiero !!! sopratutto se si collegato con piattaforme automatiche , io ho riscontrato il problema ….se comprano 50 kg di farina sul mio sito , le piattaforme restitiscono il prezzo della psedizione calcolato su un pacco unico di 50 kg , che se lo fanno pagare un occhi della testa (ma sopratutto sarebbe uno scatolo enorme ) cosi’ pensavo che invece con la steessa tecnica , si riuscisse a suddividere la spedizione in automatico con piu’ pacchi , che paradossalmente una spedizione di 2 colli da 25 costa praticamente la meta’ !
Ciao Claudio,
restituire qualcosa di diverso da un errore è possibile, ovviamente, più difficile fare in modo che la spedizione venga “splittata” in più spedizioni più convenienti, anche perché è difficile che il sistema in modo automatico possa distinguere spedizioni realmente splittabili, o se si tratta di un unico collo non divisibile.
Magari si può imbastire qualcosa di utile grazie alle classi di spedizione, alla prima occasione ci provo.
rob
Buongiorno, ho provato ad aggiungere il codice e funziona a meraviglia. Ma se volessi applicare la limitazione del peso solo in una determinata zona di spedizione come potrei fare?
Ciao Alessandro, lo script calcola il peso totale dei prodotti nel carrello, non dovrebbe essere difficile anteporre un filtro per attivarlo solo in una determinata zona.
Dovrei guardarci, non ci metto la mano sul fuoco ma dovrebbe funzionare.
Concordo, il problema è che non riesco a trovare il nome della variabile “zona di spedizione”.
Te hai definito il peso cosi:
$weight = $woocommerce->cart->cart_contents_weight;
Suppongo che la zona di spedizione sia richiamata nello stesso modo, solo non riesco a recuperare il nome della variabile. Se per caso lo conoscessi mi sarebbe davvero di aiuto! Graize mille del supporto
Tempo dietro ho lavorato su uno script con get_shipping_country
Così a naso ti direi di provare a cercare shipping_zone nella documentazione di WooCommerce
Ciao! Grazie della risposta, evidente sbaglio a inserire il codice. Io l’ho copiato nella cartella functions.php a seguire dell’ultimo codice.
Ho risolto impostando il peso su ogni specifico prodotto. Grazie ancora
Impostare il peso nei prodotti è una condizione necessaria affinché lo script funzioni…. è scritto anche nell’articolo 😉
Buongiorno, ho provato a copiare lo snippet nel file funztions.php del mio tema child ma non funziona. Come potrei fare?.Grazie.
Ovviamente bisognerebbe verificare che tu l’abbia inserito correttamente, ma potrebbe essere che lo snippet non sia più compatibile con le versioni più recenti di WooCommerce.
Appena ho un attimo di tempo lo faccio.
Mi hai messo la curiosità addosso ed ho provato subito, e in realtà lo script funziona a dovere, impedendo l’ordine con tanto di avviso nel carrello se il peso supera quello indicato nello script.
Temo allora che sia un problema di inserimento dello script, se hai bisogno di assistenza sono a disposizione.
a me non funziona
Ciao Rocco, l’articolo è del 2005, probabilmente è da aggiornare.
Appena ho due minuti cerco la soluzione compatibile con le nuove versioni di WooCommerce.
Grazie per la segnalazione!
rob
AGGIORNAMENTO, ho aggiornato script ed articolo.
NON HO CAPITO BENE DOVE ANDREBBE INSERITO GRAZIE
Tutti gli snippet vanno inseriti nel file delle funzioni del tema, il file functions.php che trovi nella cartella del tema.
Grazie infinitamente. tutto rispolto
Buongiorno, vorrei sapere se ha scritto un nuovo codice dopo gli aggiornamenti di woocommerce.
Grazie!
Ciao Silvia,
no non ho più avuto occasione di utilizzare questo script e vedere se è necessario aggiornarlo.
Hai per caso qualche feedback?
Grazie per la risposta,
ho appena provato e confermo che funziona ancora, grazie!
Ciao Silvia, grazie a te per il feedback! 🙂
rob