Vai al contenuto
🚫 L'indice di checkout WooCommerce interferisce con i clienti: 4 modi per rimuovere la verifica

🚫 L'indice di checkout WooCommerce interferisce con i clienti: 4 modi per rimuovere la verifica

Perché la validazione del codice postale è una barriera inutile

WooCommerce richiede il campo codice postale di default e lo convalida. Ma la realtà è questa: decine di paesi in Africa, America Centrale e Oceania non usano affatto i codici postali. Un acquirente dal Kenya o dalla Giamaica inserisce cifre a caso, riceve un errore e se ne va.

Campi extra ed errori nella pagina di checkout danneggiano direttamente la conversione. Secondo il Baymard Institute, il 17% degli acquirenti statunitensi ha abbandonato un checkout proprio perché era troppo lungo o complicato. Rimuovere uno o due campi superflui è il modo più economico per aumentare le vendite senza budget pubblicitario.

Di seguito, quattro modi per disattivare la validazione: dalla rimozione completa del campo alla semplice rinomina. Scegli in base al tuo pubblico.

💡 Panoramica rapida:

  • Rimuovere completamente il campo codice postale tramite unset(), per negozi che non ne hanno affatto bisogno
  • Rendere il codice postale facoltativo, per negozi con un pubblico geografico misto
  • Rimuovere i campi superflui dal modulo di fatturazione, se il codice postale è solo parte del problema
  • Cambiare l'etichetta del campo in qualcosa che l'utente capisca, intervento minimo
  • Valutare i plugin se preferisci non toccare codice

Metodo 1: rimuovere completamente il campo codice postale dal checkout

Il metodo più radicale e pulito. L'hook woocommerce_checkout_fields dà il controllo completo su tutti i campi del checkout: prendi l'array, rimuovi billing_postcode e restituiscilo.

Aggiungi il codice al functions.php del tuo tema child:

1/**
2 * Remove the postal code field (billing_postcode) from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_postcode_checkout' );
5function quadlayers_remove_billing_postcode_checkout( $fields ) {
6 unset( $fields['billing']['billing_postcode'] );
7 return $fields;
8}

Cosa succede qui. L'hook woocommerce_checkout_fields riceve l'intero array dei campi del checkout: fatturazione, spedizione e ordine. La funzione unset() rimuove la chiave specifica billing_postcode dalla sezione billing. L'array viene restituito a WooCommerce senza il campo codice postale, che quindi scompare sia dal modulo che dalla validazione.

Ma se il tuo pubblico è misto e alcuni clienti hanno davvero bisogno del codice postale, vedi il metodo 2.

Metodo 2: rendere il codice postale facoltativo

Invece di rimuovere il campo, puoi semplicemente togliere il flag di obbligatorietà. Il campo resta nella pagina, ma l'acquirente può saltarlo senza errori.

Qui usiamo il filtro woocommerce_default_address_fields, che gestisce le impostazioni predefinite per tutti i campi dell'indirizzo:

1/**
2 * Make the postal code field optional.
3 */
4add_filter( 'woocommerce_default_address_fields', 'quadlayers_optional_postcode_checkout' );
5function quadlayers_optional_postcode_checkout( $p_fields ) {
6 $p_fields['postcode']['required'] = false;
7 return $p_fields;
8}

La differenza rispetto al primo metodo sta nell'hook. woocommerce_default_address_fields lavora a un livello più basso: imposta le proprietà dei campi stessi (etichetta, placeholder, obbligatorietà) prima che arrivino nelle sezioni di fatturazione e spedizione. Ecco perché qui la chiave è semplicemente postcode, senza il prefisso billing_.

Adatto a negozi che vendono in paesi sia con che senza codici postali.

Metodo 3: rimuovere i campi superflui dal modulo di fatturazione

Spesso il problema è più ampio del solo codice postale. Anche i campi azienda, indirizzo_2, città e provincia non sono sempre necessari: ognuno aggiunge attrito al checkout.

Lo stesso hook woocommerce_checkout_fields rimuove qualsiasi campo tramite il suo identificatore. Ecco l'elenco completo delle chiavi disponibili per la sezione di fatturazione:

1unset( $fields['billing']['billing_company'] );
2unset( $fields['billing']['billing_address_2'] );
3unset( $fields['billing']['billing_city'] );
4unset( $fields['billing']['billing_state'] );
5unset( $fields['billing']['billing_phone'] );

I nomi sono autoesplicativi. Il prefisso billing_ indica che il campo appartiene al modulo di fatturazione. Ad esempio, per rimuovere company e address_2 insieme al codice postale:

1/**
2 * Remove company, address_2 and postal code from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_fields' );
5function quadlayers_remove_billing_fields( $fields ) {
6 unset( $fields['billing']['billing_company'] );
7 unset( $fields['billing']['billing_address_2'] );
8 unset( $fields['billing']['billing_postcode'] );
9 return $fields;
10}

Diverse chiamate unset() convivono senza problemi all'interno di una stessa funzione: basta elencare le chiavi che si vogliono nascondere.

Metodo 4: Rinominare un campo con qualcosa che l'utente capisce

Intervento minimo con massimo effetto. Non si tocca la validazione, si cambia semplicemente l'etichetta criptica «CAP / Codice postale» con qualcosa che il proprio pubblico comprende. Per esempio, «Provincia» o «Codice postale (se lo possiedi)».

Usiamo l'hook gettext, lo stesso che WordPress e WooCommerce utilizzano per tradurre l'interfaccia:

1/**
2 * Change checkout field labels via gettext.
3 */
4add_filter( 'gettext', 'quadlayers_billing_field_strings', 20, 3 );
5function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
6 switch ( $translated_text ) {
7 case 'Postcode / ZIP':
8 $translated_text = __( 'Area code', 'woocommerce' );
9 break;
10 }
11 return $translated_text;
12}

Se vuoi rinominare più campi, aggiungi i casi dentro lo switch:

1function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
2 switch ( $translated_text ) {
3 case 'Billing details':
4 $translated_text = __( 'Order information', 'woocommerce' );
5 break;
6 case 'Ship to a different address?':
7 $translated_text = __( 'Send to other location please', 'woocommerce' );
8 break;
9 case 'Company name':
10 $translated_text = __( 'Company', 'woocommerce' );
11 break;
12 case 'Postcode / ZIP':
13 $translated_text = __( 'Area code', 'woocommerce' );
14 break;
15 }
16 return $translated_text;
17}

Nello screenshot qui sopra, il risultato della combinazione degli approcci: diversi campi sono nascosti, il campo CAP è rinominato in «Prefisso provincia» e reso facoltativo, le intestazioni delle sezioni di fatturazione e spedizione sono sostituite con testi personalizzati. Il checkout è diventato più breve e chiaro, senza plugin.

Plugin per gestire i campi del checkout

Se non vuoi toccare functions.php, esistono strumenti già pronti. Vediamo due plugin gratuiti che risolvono il problema senza scrivere una sola riga di codice.

Checkout field manager for WooCommerce

Checkout Field Manager, uno degli editor di campi del checkout più diffusi. Permette di aggiungere, rimuovere e riordinare i campi nelle sezioni Fatturazione, Spedizione e Note aggiuntive, il tutto tramite un'interfaccia visuale.

Il plugin è gratuito; la versione base copre gli scenari principali: nascondere un campo, renderlo facoltativo, rinominarlo. Per la logica condizionale (mostrare un campo solo per un paese specifico) e tipi di campo aggiuntivi, esiste una versione premium.

Direct Checkout for WooCommerce

Direct Checkout for WooCommerce (in precedenza chiamato «WooCommerce Direct Checkout») risolve un problema più ampio: semplifica l'intero processo di checkout. Oltre a rimuovere i campi, può: saltare il carrello e portare il cliente direttamente al checkout, cambiare il testo del pulsante «Aggiungi al carrello», aggiungere l'aggiunta al carrello in AJAX sulle pagine prodotto.

Entrambi i plugin sono aggiornati regolarmente e compatibili con le versioni correnti di WordPress e WooCommerce.

⁉️🤔 Domande frequenti

Posso disabilitare la validazione solo per alcuni paesi?

Sì. Puoi legare il controllo a WC()->customer->get_billing_country() all'interno del filtro woocommerce_checkout_fields e applicare unset() o required = false solo per l'elenco dei paesi privi di codice postale. In questo modo, gli acquirenti da Germania o Stati Uniti vedranno ancora un campo obbligatorio, mentre i clienti dal Kenya no.

La spedizione si bloccherà dopo aver disabilitato la validazione del CAP?

Dipende dal servizio di spedizione. I corrieri postali come USPS o Royal Mail usano il codice postale per calcolare le tariffe; per loro, è meglio mantenere il campo obbligatorio o almeno visibile. Se vendi beni digitali o usi consegne tramite corriere all'interno di una città, puoi rimuovere il CAP in sicurezza. Testa il calcolo del costo per ogni zona di spedizione dopo aver apportato le modifiche.

Il codice non funziona; il campo CAP è ancora lì. Cosa c'è che non va?

Tre cause comuni. Prima: cache. Svuota la cache del sito e del browser; dopo aver modificato functions.php, apri il checkout in modalità incognito. Seconda: un altro plugin o tema sovrascrive il campo in un momento successivo rispetto al tuo filtro. Prova ad aumentare la priorità dell'hook: add_filter( 'woocommerce_checkout_fields', '...', 99 ). Terza: stai modificando il file functions.php sbagliato. Il codice deve trovarsi nel file del tema (child) attivo.

Come rimuovo il campo CAP senza modificare functions.php?

Installa Checkout field manager for WooCommerce; permette di disabilitare qualsiasi campo tramite il pannello di amministrazione. Oppure usa il plugin Code Snippets: incolla il codice PHP del metodo 1 come snippet e attivalo. Entrambe le opzioni sono più sicure della modifica diretta di functions.php e non andranno perse con l'aggiornamento del tema.

Cosa succede se la validazione del CAP è disabilitata, ma WooCommerce restituisce ancora un errore?

Molto probabilmente, l'errore non è generato dal core di WooCommerce ma da un plugin di terze parti, come un plugin per il servizio di spedizione o un validatore di indirizzi. Disabilita uno per uno i plugin di spedizione e verifica indirizzi per trovare il colpevole. Verifica anche se la validazione è impostata a livello JavaScript nel tema; a volte gli sviluppatori duplicano il controllo lato front-end.

Un esempio pratico dal video

Guarda un esempio dal vivo di configurazione dei campi del checkout, dal codice al risultato front-end:

Codice o plugin: quale scegliere?

Se devi rimuovere solo uno o due campi e hai dimestichezza con l’editor del tema, quattro righe di PHP del metodo 1 o 2 sono sufficienti. È una soluzione leggera e non aggiunge codice extra al sito.

Se hai molti campi da configurare, fai spesso modifiche al checkout o preferisci non toccare functions.php, scegli Checkout Field Manager for WooCommerce. È gratuito e ti dà il controllo visivo su tutti i campi senza il rischio di rompere il sito con un errore di battitura nel codice.

Per un’ottimizzazione completa del checkout (saltare il carrello, pulsanti AJAX, etichette personalizzate), Direct Checkout for WooCommerce copre tutto in un unico plugin.

La regola d’oro: dopo ogni modifica, fai un ordine di prova dall’inizio alla fine. Cinque minuti di test ti risparmiano ore a gestire i reclami dei clienti reali.