Torna al blog

Cos'è il filtro woocommerce_checkout_fields e i casi d'uso – WooCommerce

2023-03-123 min di lettura

woocommerce_checkout_fields è un action hook in WooCommerce utilizzato per visualizzare e modificare i campi del checkout nella pagina di checkout. Quando questo hook viene attivato, genera un array di campi di checkout che vengono utilizzati per costruire il modulo di checkout.

Questo array include vari campi, come dettagli di fatturazione, dettagli di spedizione e note sull'ordine, e ogni campo è rappresentato da un array di proprietà. Queste proprietà includono l'etichetta del campo, il tipo, il placeholder, il valore predefinito, lo stato obbligatorio e altro ancora.

Per impostazione predefinita, i campi del checkout vengono visualizzati in un ordine specifico nella pagina di checkout. Tuttavia, è possibile modificare l'ordine dei campi, le loro proprietà e il loro aspetto utilizzando vari filtri collegati a questo hook.

Ad esempio, è possibile utilizzare l'hook woocommerce_checkout_fields per modificare l'ordine dei campi, nascondere campi specifici, aggiungere nuovi campi o modificare le proprietà dei campi esistenti. È anche possibile aggiungere una validazione personalizzata ai campi del checkout utilizzando questo hook.

Casi d'uso dell'hook woocommerce_checkout_fields

Per cambiare l'ordine dei campi del checkout

La proprietà priority determina l'ordine in cui i campi vengono visualizzati. Maggiore è il valore di priorità, più in basso appare il campo nella pagina di checkout.

/**
 * Cambia l'ordine dei campi del checkout
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    $checkout_fields['billing']['billing_phone']['priority'] = 15;
    $checkout_fields['billing']['billing_email']['priority'] = 25;

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

Nel frammento di codice sopra, al campo billing_phone viene assegnato un valore di priorità 15 e al campo billing_email viene assegnato un valore di priorità 25. Ciò significa che il campo del telefono apparirà prima del campo dell'email nella pagina di checkout.

Per cambiare le proprietà dei campi del checkout

/**
 * Imposta una classe e l'attributo readonly ai campi del checkout
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    // Ottiene l'oggetto utente corrente.
    $current_user = wp_get_current_user();
    // Se l'utente corrente è loggato, forza l'email ad essere l'email dell'utente corrente
    if ( $current_user->ID ) {
        $checkout_fields['billing']['billing_email']['class'][] = 'hidden-field';
        $checkout_fields['billing']['billing_email']['custom_attributes']   = [ 'readonly' => true ];
    }

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

Il frammento di codice sopra verifica se l'utente corrente è loggato controllando la proprietà ID dell'oggetto utente corrente. Se l'utente è loggato, il codice aggiunge una classe CSS chiamata hidden-field al campo billing_email sotto la chiave billing dell'array $checkout_fields. Questa classe potrebbe essere utilizzata per nascondere il campo email nella pagina di checkout in modo che l'email dell'utente non possa essere modificata durante il checkout.

Inoltre, il codice aggiunge una proprietà custom_attributes al campo billing_email con un attributo readonly impostato su true. Questo rende il campo email di sola lettura in modo che l'utente non possa modificare la propria email anche se riesce a visualizzare il campo.

Categorie: