New 24/7 monitoring and daily cloud backups now included in every Shield Pro plan.

Products

How to fix WooCommerce product variations

Variable products break when attributes are not linked, variation rows were never generated, or imports left orphaned SKUs. Customers see 'Choose an option' with nothing selectable. This guide fixes catalog data, not theme CSS alone.

Time: 20-40 minutes Level: Intermediate

What this problem looks like

A variable product is a parent with child variation posts. The dropdown on the front end maps to those children. Missing price on a variation makes it unpurchasable even when stock exists.

Bulk imports often create attributes on the parent without generating variation posts. The admin looks correct but the storefront has zero selectable combinations.

Regenerating variations overwrites manual per-variation data if you delete existing rows first. Export products or backup the database before bulk regeneration on large catalogs.

Build attributes correctly

On the Attributes tab, add Size, Colour, or other attributes. Check Used for variations. Choose Select all for values you sell. Global attributes live under Products → Attributes and keep naming consistent across the catalog.

  1. Products → Attributes: create pa_size if it does not exist.
  2. On the product, pick pa_size and add terms S, M, L.
  3. Save attributes before opening the Variations tab.

Generate variations and set required fields

Open Variations → Generate variations → Go. WooCommerce creates a row per combination. Set regular price on every variation you sell. Empty price variations never appear as buyable.

Set stock at variation level when managing inventory per SKU. Parent stock alone does not control variation availability.

Default form values

Use Default form values to preselect a variation. Wrong defaults can grey out other options on some themes. Leave defaults empty while debugging so all options start unselected.

Import and migration issues

CSV imports must create both parent variable products and variation rows with parent SKU references. Re-import with WooCommerce's official column mapping or use WP-CLI for large catalogs.

bash
wp wc product_variation list --product_id=123 --user=1
wp wc tool run regenerate_product_lookup_tables --user=1

Theme and JavaScript conflicts

If admin looks correct but the front end fails, switch to Storefront and test. Swatches plugins and custom gallery scripts often break variation form events. Disable swatches temporarily to confirm.

When to stop DIY and hire help

Large catalogs with hundreds of variations per product, multi-currency displays, or custom configurators need developer time. BugShield repairs broken imports and variation AJAX on live WooCommerce stores.

FAQs

Why are all variations greyed out?

No variation matches the selected attributes, usually because price or stock is missing on that combination or a swatches plugin hid unavailable terms incorrectly.

How do I bulk edit variation prices?

Use the Variations tab dropdown to set regular prices in bulk, or export to CSV and re-import with variation IDs preserved.

Can I change attribute slug after launch?

Changing slugs breaks existing variation relationships. Create new attributes and migrate carefully with staging.

Why does variation image not switch?

Assign an image to each variation row. Theme gallery scripts must listen for found_variation events. Conflicts with page builders are common.

Rather someone else fixed it?

Request a fix at a confirmed price. Named UK developer, secure Vault, direct chat.

Request a Fix