Agregar una variable personalizada al contenido del carrito [cerrado]

2

He agregado una variable personalizada en la página de detalles del producto y puedo pasar el valor de la variable personalizada a la función de agregar al carrito.

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

Así que la variable $mmCentre es la variable personalizada. Ahora he hecho esto

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

El problema es que no puedo obtener ese valor en la página del carrito. Hice un volcado de cart_contents pero no puedo ver el valor pasado en la matriz.

¿Puede por favor sugerirme qué es lo que estoy haciendo mal?

    
pregunta Prithviraj Mitra 20.03.2014 - 10:23

1 respuesta

15

Hace un tiempo tuve que hacer algo similar, esto es lo que me funcionaba:

En el ejemplo, el nombre de entrada personalizado es "campo_prueba" dentro del formulario de agregar al carrito, y de esta forma, cuando se vuelca el contenido de los cart_contents, puede ver el valor en algún lugar al final

//Store the custom field
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; 
}

//Get it from the session and add it to the cart variable
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 );
    
respondido por el passatgt 20.03.2014 - 10:49

Lea otras preguntas en las etiquetas