Aggiungere una variabile personalizzata al contenuto del carrello

20 mar 2014, 11:23:14
Visualizzazioni: 40.6K
Voti: 3

Ho aggiunto una variabile personalizzata nella pagina dei dettagli del prodotto e posso passare il valore della variabile personalizzata nella funzione add to cart.

public function add_to_cart( $product_id, $quantity = 1, $mmCentre, $variation_id = '', $variation = '', $cart_item_data = array()  ) {
.........
.........
}

Quindi la variabile $mmCentre è la variabile personalizzata. Ora ho fatto questo

$this->cart_contents[$cart_item_key] = apply_filters( 'woocommerce_add_cart_item', array_merge( $cart_item_data, array(
                    'product_id'    => $product_id,
                    'variation_id'  => $variation_id,
                    'variation'     => $variation,
                    'quantity'      => $quantity,
                    'data'          => $product_data,
                    'mmCentre'      => $mmCentre
                ) ), $cart_item_key );

Il problema è che non riesco a ottenere quel valore nella pagina del carrello. Ho fatto un dump di cart_contents ma non riesco a vedere il valore passato nell'array.

Potete suggerirmi qual è l'errore che sto facendo?

2
Commenti

$mmid è un nuovo campo del modulo all'interno del form di aggiunta al carrello?

passatgt passatgt
20 mar 2014 11:32:21

Sì, $mmid è un nuovo campo del modulo. Posso vedere il valore passato alla funzione add_to_cart ma non riesco a recuperarlo nella pagina del carrello.

Prithviraj Mitra Prithviraj Mitra
20 mar 2014 11:33:30
Tutte le risposte alla domanda 1
2
16

Ho dovuto fare qualcosa di simile tempo fa, ecco cosa funzionava per me:

Nell'esempio, il nome del campo personalizzato è "test_field" all'interno del form di aggiunta al carrello, e in questo modo quando fai il dump di cart_contents, puoi vedere il valore da qualche parte alla fine

//Memorizza il campo personalizzato
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_custom_data_vase', 10, 2 );
function add_cart_item_custom_data_vase( $cart_item_meta, $product_id ) {
  global $woocommerce;
  $cart_item_meta['test_field'] = $_POST['test_field'];
  return $cart_item_meta; 
}

//Recuperalo dalla sessione e aggiungilo alla variabile del carrello
function get_cart_items_from_session( $item, $values, $key ) {
    if ( array_key_exists( 'test_field', $values ) )
        $item[ 'mmCentre' ] = $values['test_field'];
    return $item;
}
add_filter( 'woocommerce_get_cart_item_from_session', 'get_cart_items_from_session', 1, 3 );
20 mar 2014 11:49:01
Commenti

Grazie mille per il tuo suggerimento. Proverò stasera dato che non ho accesso ai file. Ti farò sapere il risultato. Ma penso che funzionerà.

Prithviraj Mitra Prithviraj Mitra
20 mar 2014 12:23:47

Fantastico. Ora funziona. Grazie mille per l'aiuto, amico.

Prithviraj Mitra Prithviraj Mitra
21 mar 2014 00:36:04