Echo specific Product Attributes and Meta Data in WooCommerce Cart Echo specific Product Attributes and Meta Data in WooCommerce Cart wordpress wordpress

Echo specific Product Attributes and Meta Data in WooCommerce Cart


Update (compatibility with WC 3+)

After your explanations in your comment below, I just discover that you are using Essential Grid premium plugin (a commercial plugin) to create some custom fields and attributes related to your wooCommerce products.

At this point, I can't help, because I have never used this plugin before, and I don't know where data is stored within this plugin, in the database.

I think that you can't use usuals WordPress/WooCommerce functions to get this data, and that is the reason that you will not get any data using get_post_meta() as usual…

The best way to get helped is:
- to search/explore your database for that custom fields data.
- to search/ask in Essential Grid plugin authors support threads.


My original answer:

For attributes defined in your products, using get_post_meta() function with the $product_id variable, you need to use it this way to get the data you want (this is an array of values):

// getting the defined product attributes$product_attr = get_post_meta( $product_id, '_product_attributes' );// displaying the array of values (just to test and to see output)echo var_dump( $product_attr );

You can also use the function get_attributes() (more recommended), this way:

// Creating an object instance of the product$_product = new WC_Product( $product_id );// getting the defined product attributes$product_attr = $_product->get_attributes();// displaying the array of values (just to test and to see output)echo var_dump( $product_attr );

All code is tested and working.

NOW CART DATA IS SET IN COOKIES AND SESSIONS and you will need to use WC()->cart syntax to get cart data and items

So you can use this kind of code to get the items (products) in cart:

foreach ( WC()->cart->get_cart() as $cart_item ) {    $product = $cart_item['data'];    if(!empty($product)){        // getting the defined product attributes        $product_attr = $_product->get_attributes();        // displaying the attributes array of values (just to test and to see output)        echo var_dump( $product_attr ) . '<br>';    }}

This will display the attributes array of values for each product in CART.


A solution based on this thread, using wc_get_product_terms() inside the same code snippet to get your attribute:

foreach ( WC()->cart->get_cart() as $cart_item ) {    $product = $cart_item['data'];    if(!empty($product)){        // compatibility with WC +3        $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;        // Getting "height" product attribute        $myAttribute = array_shift( wc_get_product_terms( $product_id, 'pa_height', array( 'fields' => 'names' ) ) );        echo $myAttribute . '<br>';    }}

References: