Pubblicato da: Roberto
Commenti: 0
Data di pubblicazione: 27/04/2021
Se abbiamo necessità di inserire un campo note , in frontend, su ogni singolo prodotto, possiamo adottare questo snippet.
Il campo verrà inserito su tutti i prodotti nel frontend, quindi valutare se si abbia o meno la necessità. Il testo inserito verrà mostrato anche nel carrello e dopo l’acquisto
/** * @snippet Campo Note sotto il prodotto*/ function aggiungi_campo_note_prodotto() { echo '<label for="note_del_prodotto" class="">Note Prodotto</label> <p class="form-row form-row-wide"> <span class="woocommerce-input-wrapper"> <textarea name="note-del-prodotto" class="input-text " id="note-del-prodotto" name="note-del-prodotto" value=""> </textarea> </span> </p>'; } add_action( 'woocommerce_before_add_to_cart_button', 'aggiungi_campo_note_prodotto' ); // function salva_campo_note_prodotto( $cart_item_data, $product_id ) { if( isset( $_REQUEST['note-del-prodotto'] ) ) { $cart_item_data[ 'note_del_prodotto' ] = sanitize_text_field($_REQUEST['note-del-prodotto']); $cart_item_data['unique_key'] = md5( microtime().rand() ); } return $cart_item_data; } add_action( 'woocommerce_add_cart_item_data', 'salva_campo_note_prodotto', 10, 2 ); // function render_meta_nel_carrello_e_checkout( $cart_data, $cart_item = null ) { $custom_items = array(); if( !empty( $cart_data ) ) { $custom_items = $cart_data; } if( isset( $cart_item['note_del_prodotto'] ) ) { $custom_items[] = array( "name" => 'Note Prodotto', "value" => $cart_item['note_del_prodotto'] ); } return $custom_items; } add_filter( 'woocommerce_get_item_data', 'render_meta_nel_carrello_e_checkout', 10, 2 ); // function note_prodotto_meta_ordine( $item_id, $values, $cart_item_key ) { if( isset( $values['note_del_prodotto'] ) ) { wc_add_order_item_meta( $item_id, "note_del_prodotto", $values['note_del_prodotto'] ); } } add_action( 'woocommerce_add_order_item_meta', 'note_prodotto_meta_ordine', 1, 3 );
Se invece vogliamo rendere obbligatoria la compilazione del campo note, possiamo aggiungere la convalida
function note_prodotto_validazione_obbligatoria() { if ( empty( $_REQUEST['note-del-prodotto'] ) ) { wc_add_notice( __( 'Per favore inserisci le note', 'woocommerce' ), 'error' ); return false; } return true; } add_action( 'woocommerce_add_to_cart_validation', 'note_prodotto_validazione_obbligatoria', 10, 3 );
Lascia un commento