Inserire campo note su ogni singolo prodotto woocommerce

Pubblicato da: Roberto Commenti: 0

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

Il tuo indirizzo email non sarà pubblicato.