Adaugă variabilă personalizată în conținutul coșului

20 mar. 2014, 11:23:14
Vizualizări: 40.6K
Voturi: 3

Am adăugat o variabilă personalizată în pagina de detalii produs și pot transmite valoarea variabilei personalizate în funcția add to cart.

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

Deci variabila $mmCentre este variabila personalizată. Acum am făcut următoarele

$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 );

Problema este că nu pot obține acea valoare în pagina coșului. Am făcut un dump al cart_contents dar nu pot vedea valoarea transmisă în array.

Îmi puteți sugera ce greșeală fac?

2
Comentarii

$mmid este un nou câmp în formularul de adăugare în coș?

passatgt passatgt
20 mar. 2014 11:32:21

Da, $mmid este un nou câmp. Pot vedea valoarea transmisă funcției add_to_cart dar nu o pot obține pe pagina coșului.

Prithviraj Mitra Prithviraj Mitra
20 mar. 2014 11:33:30
Toate răspunsurile la întrebare 1
2
16

A trebuit să fac ceva similar acum ceva timp, iată ce a funcționat pentru mine:

În exemplu, numele câmpului personalizat este "test_field" în interiorul formularului de adăugare în coș, iar în acest fel, când afișați conținutul coșului (cart_contents), puteți vedea valoarea undeva la final

//Stochează câmpul personalizat
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; 
}

//Obține-l din sesiune și adaugă-l la variabila coșului
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
Comentarii

Mulțumesc mult pentru sugestie. O voi încerca diseară, deoarece nu am acces la fișiere. Vă voi anunța despre rezultat. Dar cred că va funcționa.

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

Minunat. Acum funcționează. Mulțumesc mult pentru ajutor, prietene.

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