Product Slider BlockFree downloadMenu

How to show variation images on the WooCommerce shop page

Core WooCommerce shows a variable product once in the shop, with its main image. To see other colours, a customer has to open the product. There are two ways round that, and they solve different problems.

Choose a colour on the card and the picture changes. Sample products.

Pair of red leather low-top sneakers with white laces and soles on a light grey background
Close-up of the red court low
Another detail of the red court low
Red court low in blue, a stand-in for a variation image
Red court low in green, a stand-in for a variation image

Soft leather upper, cushioned sole. Comes with a spare set of laces.

Red court low

€129

No colour chosen

Mustard velvet armchair with cane sides and wooden legs against an olive wall
Close-up of the mustard cane armchair
Another detail of the mustard cane armchair
Mustard cane armchair in blue, a stand-in for a variation image
Mustard cane armchair in green, a stand-in for a variation image

Solid frame, joined by hand. Delivered assembled.

Mustard cane armchair

€640

No colour chosen

First, make sure variation images work at all

A very common search is "woocommerce variation image not changing". On a product page the main image changes when a variation with an image of its own is chosen. So open the variation under the product's Variations tab, and set an image on each one. If the picture still does not change, try a default theme: a custom gallery script in the theme or a plugin is the usual cause. Also, a variation form needs every attribute set to find a match, so a variation set to "any" on one attribute will not change the image until the customer has chosen the others.

Way one: list each variation as its own product

This is what "show variations as single products" means: a shop page where the red shirt and the blue shirt each have their own card. It helps when colour is the first thing people choose, as with paint or a sneaker colourway, and it makes the shop page look fuller. It also makes it longer, with near-duplicates, and for fifty colours it is awful. Dedicated plugins exist for this. Core does not do it.

Way two: swatches on the card

One card per product, with colour swatches on it, and the picture changes to the chosen colour. Swatch plugins do this, and our Morph Card does it too: hovering a swatch previews the colour with a shader morph, and clicking keeps it. Try the demo on that page. When comparing plugins, check two things: that shop-page swatches are in the free tier if you need that, because some keep them for paid, and whether they make one extra request per product to fetch variation data, which adds up on a long page.

A warning about variation data

Printing all variation images for every product on a category page gets heavy quickly. Keep the number of images per card small, lazy load the ones you are not showing, and test with your largest product. A product with hundreds of variations needs a different approach from one with four colours.

If you need more than one image per variation

Core gives each variation one image. "Additional variation images" plugins add a gallery per variation, which matters for clothing, where each colour needs front, back and detail. Decide this before you shoot, as it changes how many photos you need.

Questions

Why does my variation image not change?

Usually the variation has no image of its own, an attribute is still unset, or a theme or gallery plugin overrides the script. Test with a default theme to find out which.

Can WooCommerce show variations on the shop page by itself?

No. Core lists the variable product once. You need a plugin or custom code to show variations or swatches there.

How do I add more than one image per variation?

Core allows one. An additional variation images plugin adds a gallery per variation.

More guides