get_attributes(); if ( ! $attributes ) { return; } if ($product->is_type( 'variable' )) { return; } echo '
'; foreach ( $attributes as $attribute ) { $taxonomy = get_taxonomy($attribute['name']); $options = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) ); $label = str_replace('Product ', '', $taxonomy->label); ?>

'; } /** * Add selected attributes to cart items */ add_filter('woocommerce_add_cart_item_data', 'add_attributes_to_cart_item', 10, 3 ); function add_attributes_to_cart_item( $cart_item_data, $product_id, $variation_id ) { $attributes = $_POST['attribute']; if (empty( $attributes ) ) { return $cart_item_data; } $cart_item_data['attributes'] = serialize($attributes); return $cart_item_data; } /** * Display attributes in cart */ add_filter( 'woocommerce_get_item_data', 'display_attributes_in_cart', 10, 2 ); function display_attributes_in_cart( $item_data, $cart_item ) { if ( empty( $cart_item['attributes'] ) ) { return $item_data; } foreach (unserialize($cart_item['attributes']) as $attributeID => $value) { $attribute = wc_get_attribute($attributeID); $item_data[] = array( 'key' => $attribute->name, 'value' => $value, 'display' => '', ); } return $item_data; } /** * Add attribute data to order items */ add_action( 'woocommerce_checkout_create_order_line_item', 'add_attributes_to_order_items', 10, 4 ); function add_attributes_to_order_items( $item, $cart_item_key, $values, $order ) { if ( empty( $values['attributes'] ) ) { return; } foreach (unserialize($values['attributes']) as $attributeID => $value) { $attribute = wc_get_attribute($attributeID); $item->add_meta_data( $attribute->name, $value ); } }