Display and save added custom cart item data on Woocommerce Cart, Checkout and Orders

前端 未结 3 701
北恋
北恋 2021-01-22 04:51

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\'=>         


        
3条回答
  •  伪装坚强ぢ
    2021-01-22 05:09

    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):

提交回复
热议问题