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