Cerca

Come rimuovere campi indesiderati dal checkout di WooCommerce

Uno snippet PHP per eliminare i campi checkout di WooCommerce
Uno snippet PHP per eliminare i campi checkout di WooCommerce

Procedure di acquisto più snelle per agevolare gli ordini

In molti casi può essere utile disabilitare alcuni campi della pagina di checkout di WooCommerce, per rendere l’esperienza di acquisto più rapida.

Il checkout è già denso di suo di campi di cui faremmo volentieri a meno, come i dati fiscali, ma questi non si possono evitare, allora meglio evitare quei campi che non interessano e che complicano solamente la procedura di acquisto.

Uno snippet PHP per eliminare i campi checkout di WooCommerce

I campi del checkout di WooCommerce si possono gestire in due modi, tramite il solito plugin, oppure, per risparmiare risorse del sistema, un semplice snippet PHP, poche righe di codice da aggiungere al file fnnctions.php del tema.

Plugin per rimuovere (o modificare) i campi del checkout di WooCommerce

Tra le soluzioni gratuite gratuite puoi usare Checkout Field Editor (Checkout Manager) for WooCommerce.

È gratuito per molte funzionalità, solitamente sufficienti nella maggior parte dei casi, altrimenti bisogna attivare la versione Pro, al costo di 39 Dollari US.

Permette di fare tantissime cose, anche troppe, e forse per questo non è uno dei plugin più leggeri da usare con WooCommerce, a meno che non se ne abbia davvero bisogno.

In alternativa, per andare sul sicuro, c’è il quasi omonimo plugin Checkout Field Editor, realizzato direttamente da WooCommerce, che permette di modificare il checkout a piacere, modificando, eliminando o aggiungendo campi sia sulla parte di fatturazione che della spedizione..

Si tratta di un plugin premium, dal costo di 49 Dollari US, e forse è più ottimizzato del precedente.

Se il tuo scopo è solo quello di rimuovere dei campi dalla pagina di checkout, forse entrambi i plugin sono una soluzione esagerata, con un po’ di manualità puoi tenere il sistema alleggerito da plugin di cui potresti fare tranquillamente a meno.

I prezzi dei plugin indicati sono rivelati durante la stesura di questo articolo, e possono variare.

Rimuovere i campi del checkout con uno snippet PHP

Si tratta di un semplice script, in questo esempio viene eliminato il campo riguardante la seconda riga dell’indirizzo, o “indirizzo 2”, nel modulo dati per la fatturazione:

add_filter( 'woocommerce_checkout_fields' , 'rimuovi_campi_checkout' ); 
function rimuovi_campi_checkout( $fields ) { 
unset($fields['billing']['billing_address_2']); 
return $fields; 
}

La riga 3 dello script indica quale campo vuoi eliminare,  puoi scegliere quelli che desideri eliminare da questo elenco, anche più d’uno:

unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['billing']['billing_email']);
unset($fields['order']['order_comments']);
unset($fields['account']['account_username']);
unset($fields['account']['account_password']);
unset($fields['account']['account_password-2']);

Come puoi notare, le ultime 4 righe riguardano le note dell’ordine e la registrazione dell’account, e differiscono leggermente.

Per ora abbiamo visto solo i campi relativi ai dati per la fatturazione, ma puoi tranquillamente aggiungere, nello stesso script, anche dei campi relativi ai dati per la spedizione, quando il cliente attiva l’opzione di spedizione ad un indirizzo differente.

Rimuovere i campi di spedizione del checkout WooCommerce

Esattamente per i dati di fatturazione, si possono rimuovere i campi relativi ai dati della spedizione, cambiano solo le opzioni del comando unset.

È sufficiente sostituire “billing” con “shipping“, come in questo esempio:

unset($fields['shipping']['shipping_country']);

Non è necessario un secondo script per eliminare dei campi per la spedizione, basta che aggiungi gli unset dei campi che vuoi eliminare, direttamente nello script che hai utilizzato per i dati di fatturazione.

Come usare uno snippet PHP in WordPress

Usare uno snippet di codice PHP non è difficile, soprattutto se stai utilizzando un tema child, in pratica devi modificare il file functions.php del tuo tema child.
In alternativa, se non stai usando un tema child, puoi utilizzare un plugin come Code Snippets o similari.

Se ti interessa saperne di più, approfondire questo argomento, consulta la mia guida veloce su come usare gli snippet PHP con WordPress.

Condividi se ti è piaciuto!

Altri articoli che potrebbero interessarti:

Picture of Roberto Rota

Roberto Rota

Libero professionista, un "artigiano del web", lavoro nella comunicazione in rete da quando esiste Internet. Mi occupo principalmente di assistenza su WordPress e assistenza e consulenza WooCommerce, seguo la realizzazione di progetti web, in particolare siti di e-commerce, visibilità e comunicazione in rete. Il mio curriculum è su Linkedin, e mi puoi trovare anche su Instagram, FaceBook e Twitter.

DAI IL TUO CONTRIBUTO

Se il mio lavoro ti è stato di aiuto, contribuisci alla continuità di questo sito.
Basta una piccola donazione su PayPal, una pizza e una birra alla tua salute!

7 risposte

  1. Salve, ottimo ed interessante.

    Mi servirebbe eliminare dei campi inutili SOLO SE il cliente sceglie il ritiro in sede come modalità di spedizione.
    Ho impostato nel function.php questo

    /** filtro per eliminare campi di troppo al checkout se acquisto avviene senza spedizione **/
    add_filter(‘woocommerce_checkout_fields’, ‘corradoeliminacampi’);

    function corradoeliminacampi($fields) {
    $shipping_method =’local_pickup:4′;
    global $woocommerce;
    $chosen_methods = WC()->session->get( ‘chosen_shipping_methods’ );
    $chosen_shipping = $chosen_methods[0];
    if ($chosen_shipping == $shipping_method) {
    unset($fields[‘billing’][‘billing_company’]);
    unset($fields[‘billing’][‘billing_address_1’]);
    unset($fields[‘billing’][‘billing_address_2’]);
    unset($fields[‘billing’][‘billing_city’]);
    unset($fields[‘billing’][‘billing_postcode’]);
    unset($fields[‘billing’][‘billing_country’]);
    unset($fields[‘billing’][‘billing_state’]);
    }
    return $fields;
    }

    Ma funziona SOLO se il cliente è già loggato ed ha messo in precedenza un indirizzo.
    Qualcosa mi sfugge

    1. Ciao Corrado, argomento interessante anche se non l’ho mai approfondito più di tanto.

      Appena ho tempo provo a partire dal tuo script e faccio qualche test, se ho notizie ti aggiorno.

      rob

  2. Ciao provo a chiedere qui che la mia domanda è “quasi attinente” al post qui sopra (utilissimo grazie). Esiste un plugin ho uno script che mi permetta di modificare la visualizzazione del Subtotale con iva o senza iva in base al ruolo dell’utente che sta comprando? Esempio se il cliente è un “Customer” o un “Guest” allora i prezzi nel Subtotale devono essere visualizzati comprensivi di iva, se invece il cliente è un “Wholesaler” allora sarebbe + opportuno che i prezzi siano visualizzati senza iva. Grazie e complimenti!

  3. Ciao e complimenti per l’articolo,
    senti una info, vorrei modifcare i campi all’interno dell’indirizzo di fatturazione nelle mail (tipo quella di ordine ricevuto) di woocommerce. Come posso fare?

    1. Ciao Marco, non ho capito se vuoi modificare i campi nella pagina di checkout o se invece vuoi solo modificare i campi all’interno delle mail automatiche del plugin.

      Nel primo caso ci sono diversi modi, sia tramite codice che tramite tramite plugin come Checkout Manager, che gestisce i campi della pagina e li riporta anche nelle mail dell’ordine.

      Per modificare il contenuto delle mail, invece, la faccenda si complica perché vengono generate da un loop abbastanza complicato da modificare.

      Qualcosa si può fare tramite hooks di codice, ma dipende sempre dalle tue intenzioni.

      Se mi fai qualche esempio più preciso posso vedere se riesco ad esserti utile.

      Roberto

  4. Ciao ho trovato informazioni molto interessanti e provo a chiedere un aiuto…
    Avrei bisogno di saltare il check out per uno specifico prodotto che è gratuito e scaricabile, quindi è per me sufficiente che il “cliente” faccia login, non mi serve avere altri suoi dati, ma non riesco a capire se possibile.
    Ti ringrazio se riuscirai a darmi un consiglio!

    1. Ciao Elisa,

      se non ha un processo di acquisto non è un prodotto, puoi creare una pagina e con i giusti privilegi permettere il download solo a chi è registrato, non è difficile.
      Se ti serve che appaia anche tra i prodotti, crei un prodotto senza aggiunta al carrello, al suo posto un pulsante con il link alla pagina che nel frattempo hai creato.

      rob

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

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