I have a WooCommerce shop with products that all follow the same structure, but I am stuck on how to model the attributes and variations without ending up with a huge number of combinations per product.
Each product has these options
Color with 4 values
Surface or finish with 2 values matt and glossy This does not change the price or the product image
Power with 4 values for example 26W 39W 52W 65W This does change the product image, the price, and the size
Kelvin CCT with 4 values for each power for example 2700K 3000K 3500K 4000K This does not change the product image or the price, but each Power × Kelvin combination has its own product code or SKU
Dimming with 2 values yes and no This does not change the product image, it only adds a price surcharge
Right now I have modeled all of these as attributes that are used for variations, which gives me
4 (Color) × 2 (Surface) × 4 (Power) × 4 (Kelvin) × 2 (Dimming) = 256 variations per product
This is very hard to maintain. For example
When I change the price for one power level I have to update many variations
When I change a product image for one power level I also have to touch many variations
In reality I only have 4 distinct product images, one for each power, not 256
I am using WordPress with WooCommerce and I am looking for a better way to structure this.
What I need functionally
The customer should still be able to select
Color
Surface or finish
Power
Kelvin
Dimming
Orders should contain all of these selections
Only Power and maybe Dimming should influence price and image
Every Power × Kelvin combination should be able to have its own SKU or product code
One more requirement is that this shop needs to work well for both B2B and B2C customers. Because of that I have tried to stay away from extra product addon plugins for now and would prefer something that is close to WooCommerce core or at least easy to maintain for both customer types.
My questions
What is the recommended way in WooCommerce to model this so I do not end up with 256 variations per product
Does it make sense to use variations only for the Power × Kelvin combinations and then use something else for Color Surface and Dimming, for example custom fields or attributes that do not create new variations
If that is the right direction, how would you typically implement this so that
the frontend still shows nice dropdowns or buttons for all options
and the order reliably stores every selected value
Given these constraints what would you do in my situation Any concrete examples or best practice patterns for a setup that serves both B2B and B2C customers would be very helpful