Woocommerce aggiungere un checkbox di condizioni aggiuntive in fase di carrello

 


Utilizzando woocommerce, a volte è necessario, per motivi legali o commerciali, aggiungere un checkbox di condizioni aggiuntive in fase di carrello.


Vediamo un esempio pratico: 



Per ottenere un effetto simile bisogna aggiungere una funzione al template.


Prendiamo quindi il file  functions.php del tema ed incolliamo queste righe:


/**
 * WooCommerce Checkbox checkout
 */
add_action( 'woocommerce_review_order_before_submit', 'condizioni_checkbox', 10 );

function condizioni_checkbox() {
   
    woocommerce_form_field( 'checkout-checkbox', array( 
       'type'          => 'checkbox',
       'class'         => array('form-row condizioni_checkbox'), // CSS Classe
       'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
       'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
       'required'      => true, // RICHIESTO 
       'label'         => 'DIchiaro di essere maggiorenne', // ETICHETTA
    ));    
}


/**
 * Avviso se non selezionato
 */ 
add_action( 'woocommerce_checkout_process', 'condizioni_checkbox_avviso' );

function condizioni_checkbox_avviso() {
    if ( ! (int) isset( $_POST['checkout-checkbox'] ) ) {
        wc_add_notice( __( 'Devi accettare le condizioni.' ), 'error' );
    }
}






Fatto :) 


Naturalmente il sistema di validazione potrebbe non funzionare in base al template o altre classi o funzioni, questo è un canovaccio base, andrà poi adattato in base alle diverse situazioni se necessario.





Commenti

  1. Ciao, complimenti per l'articolo, ma se volessi eseguire nel carrello (cart) quale sarebbe l'hook dove attaccarmi per la funzione condizioni_checkbox_avviso, ovverro qule è il corrispettivo di woocommerce_checkout_process nel carrello?

    RispondiElimina
  2. Ciao,
    grazie.

    Ecco l'elenco di tutti gli hook, troverai quello che stai cercando fra questi:

    http://hookr.io/plugins/woocommerce/#index=c

    RispondiElimina

Posta un commento