
Nell’ambito di un progetto WooCommerce a volte c’è la necessità di inserire nel carrello uno o più prodotti che hanno caratteristiche di configurazione che il plugin Variazioni non gestisce e ha bisogno quindi di più informazioni.
Questo è parte fondamentale del https://www.webtechandbiz.com/plugin-configurare-un-prodotto-in-modo-avanzato-in-woocommerce/ che utilizza proprio questa ed altre tecniche per gestire configurazioni avanzate di prodotti.
Il form da inserire nella pagina del prodotto WooCommerce per mettere nel carrello il prodotto inviando anche altre informazioni. In questo caso, il campo “custom_field” che deve essere popolato via javascript prima di forzare la submit() del form.
<script>var APPLICATION_URL = '<?php echo site_url()?>/';</script>
<form id="submit_custom_price" method="post" action="?add-to-cart=<?php echo $product->get_id()?>">
<input type="hidden" id="custom_field" name="custom_field" value="0"/>
</form>
Prendere i dati dalla $_POST (cioè inviati dal form della pagina prodotto) e prepararli in modo da poterli utilizzare per visualizzarli nel carrello.
function besajifrip( $cart_item_data, $product_id ) {
if( isset($_POST)){
$cart_item_data[ "jicuclarus_post" ] = $_POST;
}
return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'besajifrip', 99, 2 );
Tramite questo hook è possibile inviare i dati da visualizzare sotto il nome del prodotto nel carrello.
add_filter( 'woocommerce_get_item_data', 'brujuchoth', 10, 2 );
function brujuchoth( $item_data, $cart_item ) {
if(isset($cart_item['jicuclarus_post'])){
$item_data[] = array(
'key' => 'Label',
'value' => $cart_item['jicuclarus_post']['label'],
);
}
return $item_data;
}
Questi codici possono essere inseriti in uno ShortCode per comodità di utilizzo.