Nel checkout del nostro shop i campi di fatturazione non sono ordinati come vorremmo?
Vogliamo modificare l’ordine per migliorare l’esperienza dell’utente ed aiutarlo a concludere l’ordine?
Allora vediamo in questa breve guida come possiamo procedere. Innanzitutto vediamo quali sono i campi di default che woocommerce inserisce nel checkout:
[billing_country] [billing_first_name] [billing_last_name] [billing_company] [billing_address_1] [billing_address_2] [billing_postcode] [billing_city] [billing_state] [billing_email] [billing_phone]
Quindi, da come possiamo vedere appariranno in questo preciso ordine:
- Stato
- Nome
- Cognome
- Società
- Indirizzo 1
- Indirizzo 2
- CAP
- Città
- Provincia
- Telefono
ma a noi non piace questo ordine e vogliamo quindi sistemarlo in un modo più pulito mettendo i campi in questa sequenza:
- Società
- Nome
- Cognome
- Telefono
- Indirizzo 1
- Indirizzo 2
- Stato
- Provincia
- CAP
quindi quello che dobbiamo fare è utilizzare l’hook di woocommerce “woocommerce_checkout_fields” inserendo nel functions.php del tema (quello attivo sul vostro sito) questo codice:
add_filter("woocommerce_checkout_fields", "order_fields"); function order_fields($fields) { $order = array( "billing_company", "billing_first_name", "billing_last_name", "billing_email", "billing_phone" "billing_address_1", "billing_address_2", "billing_country", "billing_state", "billing_postcode", ); foreach($order as $field){ $ordered_fields[$field] = $fields["billing"][$field]; unset($fields["billing"][$field]); } foreach($tmp_fields = $fields['billing'] as $key => $field){ $ordered_fields[$key] = $fields["billing"][$key]; } $fields["billing"] = $ordered_fields; return $fields; }
E in questo modo avremo i campi ordinati a nostro piacimento. Capiamo ora cosa fa questo codice. Nell’array $order ci sono i campi che vogliamo ordinare e, nel primo foreach, lo scorriamo per selezionare il campo dall’array $fields ed impostarlo nell’array temporaneo $ordered_fields. Una volta impostato il campo nell’array $ordered_fields, sempre nello stesso loop, lo andiamo a togliere dall’array originale $fields . Questo perché dobbiamo selezionare, nel loop successivo, i campi rimasti nel array originale $fields ed aggiungerli all’array temporaneo $ordered_fields altrimenti ci perderemmo tutti i campi non inseriti nell’array $order. Ed ecco che terminati i due loop reimpostiamo la variabile $fields[“billing”] = $ordered_fields; e il return tornerà a woocommerce i campi di fatturazione nell’ordine da noi impostato.
Salve a tutti, ho un sito in lingua Giapponese, i clienti non possono completare la procedura d’acquisto perchè arrivati alla compilazione dei dati di fatturazione il sistema richiede che la città sia scritta con caratteri romani mentre invece nella finestrella le città sono scritte come ovvio con caratteri Giapponesi (Kanji), dove si va per cambiare queste scritte oppure come mettere in off questa pagina? Milla grazie.
Buonasera, come inserire un campo CF/PIVA (obbligatorio) sotto Società (nel mio caso Ragione Sociale)?
Come far si che sia riportato nelle email generate dall’ordine?
Buonasera, come inserire un campo CF/P.IVA (obbligatorio) esattamente sotto “Società” (Ragione Sociale nel mio caso)?
PS. sto utilizzando multivendor plugin dona, non so se cambia
Salve! Vorrei chiederle un’info: tramite i filtri è possibile modificare anche i campi di registrazione? se si come?
grazie mille
Ciao Alessandro, che plugin stai utilizzando? solitamente il plugin inserisce anche in amministrazione i campi cf e p.iva creati. Tienici aggiornati
Ciao, nel mio processo di checkout ho anche un campo relativo alla fatturazione (CF e PIVA) gestito da un plugin terza parte.
Come faccio a identificare i campi relativi a questi dati per poi inserirli nell’ordine di visualizzazione desiderato?
grazie mille
Ciao Carlo,
per poter eliminare un campo nel checkout puoi utilizzare i filter che woocommerce ci mette a disposizione.
Di seguito un esempio:
add_filter( ‘woocommerce_checkout_fields’ , ‘custom_override_checkout_fields’ );
function custom_override_checkout_fields( $fields ) {
unset($fields[‘billing’][‘billing_address_2’]);
return $fields;
}
Per quanto riguarda lo stile dei campi (es. email + phone) puoi utilizzare i css (modificando il file style.css del tema) e renderli più grandi, più piccoli o ancora allinearli a tuo piacimento.
Buon proseguimento 😉
Grazie per l’utilissimo post.
Oltre ad aver cambiato l’ordine di visualizzazione, mi servirebbe eliminare alcuni campi superflui, (es. “address_2”) e magari ridurre le larghezze dei campi “postcode” e “city” in modo da affiancarli, come succede per “firstname + lastname” e anche “email + phone”.
E’ una cosa fattibile?
Grazie