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

Products

Learn 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
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

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.

Step 1: 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.

Step 2: 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.

Step 3: 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.

Step 4: 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 from SSH for large catalogs.

Only run the commands below if you have SSH access to the server. They will not work inside File Manager.

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

Step 5: 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. Rename wp-content/plugins to plugins.disabled via File Manager, SFTP, or FTP to disable swatches temporarily and 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 at a confirmed price without hourly billing surprises.

Questions answered

WooCommerce product variation FAQs

Answers about attributes, prices, stock, imports, AJAX limits, images, caching, and repairing variable products safely.

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.

What causes WooCommerce product variations not to work?

Attributes may not be marked for variations, rows may be missing or disabled, prices or stock may be absent, imports may break parent links, or scripts may fail.

Why must WooCommerce variation attributes be used for variations?

That setting tells WooCommerce which attribute combinations create purchasable child products. Display-only attributes cannot drive the variation selector.

Do WooCommerce variations need their own prices and stock?

Each variation needs a valid price to be purchasable. Stock can be managed at product or variation level, but the chosen approach must be consistent.

Why do products with many WooCommerce variations behave differently?

Large variation sets may use AJAX instead of embedding every combination in the page. Theme or plugin JavaScript conflicts can then break selection.

How do CSV imports break WooCommerce variations?

Variation rows can lose the parent SKU, attribute names, values, prices, or unique SKUs. Check the mapping and a small sample before reimporting the full catalogue.

How do I verify repaired WooCommerce product variations?

Test every attribute path, price, image, stock state, add-to-cart action, basket line, tax, shipping, and mobile selector on representative products.

Would you rather a developer fixed it?

Request a fix at a confirmed price and speak directly with the BugShield developer working on your site.

Request a Fix