Reputation: 3843
I am trying to add product in cart with cart item meta data. Here is the code :
$cart_item_data = array();
$cart_item_data['add_size'] = array('PR CODE'=>'1.0');
print_r(WC()->cart->add_to_cart( $product_id ,1, 0,array(), $cart_item_data ));
It's adding product in cart but it's not showing up in order or in cart.
Can any help me out?
Upvotes: 4
Views: 29135
Reputation: 817
After I spent the last hours figuring things out I found out that the method has actually changed a bit over the time.
Method:
$woocommerce->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
In my case I needed to do this and the custom meta data got automatically displayed in the cart and order:
$woocommerce->cart->add_to_cart($product_id, $quantity, NULL, NULL, array('your_key' => 'your_value'));
You can find out more here.
Upvotes: 3
Reputation: 253784
To display and save custom meta data added to cart in cart, checkout and orders when using:
WC()->cart->add_to_cart( $product_id ,1, 0,array(), array('add_size' => array('PR CODE'=>'1.0') );
You will use the following code:
// Display custom cart item meta data (in cart and checkout)
add_filter( 'woocommerce_get_item_data', 'display_cart_item_custom_meta_data', 10, 2 );
function display_cart_item_custom_meta_data( $item_data, $cart_item ) {
$meta_key = 'PR CODE';
if ( isset($cart_item['add_size']) && isset($cart_item['add_size'][$meta_key]) ) {
$item_data[] = array(
'key' => $meta_key,
'value' => $cart_item['add_size'][$meta_key],
);
}
return $item_data;
}
// Save cart item custom meta as order item meta data and display it everywhere on orders and email notifications.
add_action( 'woocommerce_checkout_create_order_line_item', 'save_cart_item_custom_meta_as_order_item_meta', 10, 4 );
function save_cart_item_custom_meta_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
$meta_key = 'PR CODE';
if ( isset($values['add_size']) && isset($values['add_size'][$meta_key]) ) {
$item->update_meta_data( $meta_key, $values['add_size'][$meta_key] );
}
}
Code goes in function.php file of your active child theme (or active theme). Tested and works.
Example display on Cart (and Checkout) pages:
Example display on Orders (and email notifications):
Upvotes: 22
Reputation: 2709
You can add the product to the cart using the following code:
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation );
Reference : https://docs.woocommerce.com/wc-apidocs/source-class-WC_AJAX.html#356-397
Have a look at this too: add meta to a product on cart WooCommerce
Upvotes: 0