WooCommerce supports the notion of “grouped” products. This is implemented by a store owner creating a Product abstraction, sometimes referred to by Woo in the documentation as a parent product.
This parent instance of a group of products does not itself have a price.
Its functional role is to visually link via some theme UI interface X number of products and presented to a shopper as a unit.
This unit is not invariant, as Product instance is a group can be purchased separately, by removing items from the Cart.
Moreover, there is no discount for buying grouped products.
In other words, being grouped does not affect the normal retail price in any way – unless a coupon is applied at checkout, the total cost is arithmetically additive.
The shop owner’s ability to group products is built into Woo core; in other words, it’s free.
In order to present a customer with more sophisticated marketing offers, a store owner must purchase extensions, such as the one for Product Bundling, or another for what is referred to in WooLand as a Composite Product.
These extensions are not free.
WooCommerce utilizes the term “virtual” to describe a subtype of Product,
Once the sku and Type are specified, a shop owner user is free to link n-number of other Product types (except for abstract classes: in other words, you can have groupings of grouped products) to this parent instance.
In the WooCommerce world, a Product instance is by default a “Simple Product.”
Three other Product types are also available:
a) Grouped product
b) External/Affiliate product
c) Variable product
Any of these four Product types can optionally be “virtual” or “downloadable, which are subtypes of Product.
In general, the notion of virtual products refers to intangible products, such as a subscription to some pricey newsletter.
A downloadable product subtype is something tangible (such as the zip file for a plug in, or the .pdf of some newsletter) that you can download your computer.
This Product class hierarchy provides flexibility to the shop owner.
In can be confusing at first, but speaking generally, what the designers of Woo mean by the term “virtual” is something that you cannot see or touch, and downloadable is typically thought of as an executable of some sort.
There are additional complexities to Product that we need to keep in mind.
For example, what exactly are Variable Products, and what is meant by Custom Attributes?
A class of Grouped Product types is not a true M:N BOM (bill-of-materials) case, which usually leads to elaborate complexity in order to implement correctly, and often entails a significant performance hit.