Agregar variable personalizada al contenido del carrito
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 add to cart.
public function add_to_cart( $product_id, $quantity = 1, $mmCentre, $variation_id = '', $variation = '', $cart_item_data = array() ) {
.........
.........
}
Entonces 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 dump de cart_contents pero no puedo ver el valor pasado en el array.
¿Pueden sugerirme qué estoy haciendo mal?

Tuve que hacer algo similar hace un tiempo, esto es lo que funcionó para mí:
En el ejemplo, el nombre del campo personalizado es "test_field" dentro del formulario de añadir al carrito, y de esta manera cuando haces un dump de cart_contents, puedes ver el valor al final
// Almacenar el campo personalizado
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;
}
// Obtenerlo de la sesión y añadirlo a la variable del carrito
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 );

Muchas gracias por tu sugerencia. Lo intentaré esta noche ya que no tengo acceso a los archivos. Te avisaré sobre el resultado. Pero creo que funcionará.
