WooCommerce: codici utili per personalizzare il carrello

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.

Form da inserire in pagina WooCommerce

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>

Gestire i dati dal 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 );

Mostrare i dati nel carrello

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.


Questo sito web non offre alcun cookie perchè non ho interesse a tracciare le attività di nessun utente attraverso i cookie e quindi non ne ho inseriti.
Il tema e i plugin sono realizzati da me e quindi nessun altro è autorizzato ad inserire cookie su questo sito web.
Se qualcuno dovesse individuare un cookie da qualche parte su questo sito web, non ce l'ho messo io,
ed è pregato di farmelo sapere, così potrò cercare e distruggere il cookie eventualmente individuato.
I software e i pezzi di codice condivisi su questo sito web sono da considerarsi a scopo educativo e senza alcuna garanzia
© 2021