# WooCommerce variable products displaying wrong

> A WooCommerce variable product isn’t a single record: each combination of attributes (size, colour…) is its own "variation", with its own price, stock and sometimes its own image. A wrong display almost always comes from a mismatch between those variations and what the theme or the cache actually shows the customer.

- Source canonique : [https://allaux.fr/en/wordpress-woocommerce/problemes/produits-variables-mal-affiches](https://allaux.fr/en/wordpress-woocommerce/problemes/produits-variables-mal-affiches)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Open the Variations tab on the product and compare the failing variation’s price, stock and image with what the shop displays. If the admin data is right, clear the transients from WooCommerce > Status > Tools: price ranges and variation lists stay frozen there after an import. Finally, make sure a global attribute has not been mixed with a local one.

## How I go about it

1. **Checking the variation itself in the database** — I look at the variation in the WordPress admin, under the product’s Variations tab: are the price, stock and image actually correct there, independent of what the front end shows?
2. **Clearing WooCommerce transients** — WooCommerce caches price ranges and some variation data in transients. After a bulk edit or an import they can go stale: WooCommerce > Status > Tools has a dedicated action to clear them.
3. **Checking attribute matching** — I check whether a global attribute (a taxonomy like pa_couleur) is mixed up with a local attribute specific to that product: this mismatch can leave a variation existing in the database that never resolves on the front end.
4. **Testing with caching fully off** — I reload the product page with page caching disabled. A static caching plugin can freeze a product page’s HTML, including price and stock, well after the real data has changed.
5. **Targeted fix** — Depending on what turns up, I fix the data, reassign the attribute, or adjust the cache configuration to exclude what needs to stay dynamic.

## What I handle regularly

- The price shown on a variation doesn’t match what’s entered in the WordPress admin
- "Out of stock" shows up even though the quantity is correctly set
- The product image doesn’t change when the customer picks a colour
- A variation exists in admin but never shows in the customer’s dropdown
- It only happens on some products, never all of them, with no obvious pattern

## Three quite distinct causes

The most common cause is genuinely stale data: WooCommerce stores a calculated price range in a transient to avoid recomputing it on every page view. A bulk price edit or a CSV import doesn’t always refresh that cache automatically, leaving a displayed price that no longer matches anything.

The second cause sits in the product’s structure itself: a variation is built from a combination of attributes, and a global attribute (a taxonomy shared across products, like pa_couleur) doesn’t behave the same as a custom attribute local to one product. Mixing the two, often inherited from an import or a manual edit, can leave a variation technically present in the database that never resolves correctly on the product page.

The third cause has nothing to do with data: a full-page caching plugin can freeze a product page’s HTML, including a variation’s price and stock status, long after reality has changed in the database.

## What’s a setting, what needs development

> Clearing transients or fixing a wrongly linked attribute stays within reach of a setting, no code required. WooCommerce sets no limit on how many attributes you can combine; three is a complexity threshold, not a software constraint. In practice, past three crossed attributes the number of variations becomes hard to manage by hand, and as soon as you need per-variation logic that WooCommerce core doesn’t support, such as a conditional pricing rule, you’re into custom development.

## Worth reading too

- **Slow WordPress or WooCommerce site** — A badly configured cache freezing variations often affects overall site speed too. ([/wordpress-woocommerce/site-lent](/wordpress-woocommerce/site-lent))
- **Custom WooCommerce extension** — For when variation logic goes beyond what WooCommerce core can do natively. ([/wordpress-woocommerce/extension-sur-mesure](/wordpress-woocommerce/extension-sur-mesure))

## FAQ

### Can I clear the transients myself without risk?

Yes. The action sits in WooCommerce > Status > Tools and simply recalculates data already present in the database: it doesn’t delete or alter your products.

### Why does it only affect some products?

Because it almost always comes from a specific attribute combination or import history unique to those products, not a global setting affecting the whole catalogue.

### I have a caching plugin, do I need to disable it?

Not necessarily disable it, but product pages need excluding from page caching, or at minimum the cache needs clearing after every price or stock change.

### How many variations can WooCommerce handle without issues?

WooCommerce core handles a reasonable number of combinations fine, but past several hundred variations per product, admin performance degrades noticeably.
