Product Slider BlockFree downloadMenu

How to show WooCommerce sale products in a slider

WooCommerce knows which products are on sale. It takes one block or one shortcode to show them. The rest is about keeping the row accurate, and being honest about the clock.

Sale products in a slider, with the old and the new price. Sample products.

Sale
Amber glass jar candle with a blank label and a wooden lid on a terracotta background
Amber jar candle€26€21Poured by hand in soy wax, with a cotton wick that burns clean.
Sale
Two white candles in glass jars tied with twine and topped with dried orange flowers
Twine jar candle duo€22€18Poured by hand in soy wax, with a cotton wick that burns clean.
Sale
Rows of small white wood-wick candles in glass jars on a light wooden table
Wood-wick minis€38€30Poured by hand in soy wax, with a cotton wick that burns clean.
Sale
Two wood-wick candles in glass jars on a light table with a soft blurred plant behind
White fig pair€32€26Poured by hand in soy wax, with a cotton wick that burns clean.
Sale
Two lit golden yellow taper candles against a dark background
Golden taper pair€14€11Poured by hand in soy wax, with a cotton wick that burns clean.
Sale
Lit teal and grey pillar candles in a dim, moody setting
Teal pillar set€34€27Poured by hand in soy wax, with a cotton wick that burns clean.

A whole sale page

People search for a "woocommerce sale products page" because there is none by default. Make a normal page, add the Product Collection block, and choose the On Sale Products collection. Or in a classic setup, add [products on_sale="true" paginate="true"]. Put the page in your menu while a sale runs, and take it out when one ends, as an empty sale page looks poor.

A row or slider

The same collection in Product Collection can use the carousel layout, since version 10.2. If you want autoplay or an effect, our Product Slider has On sale as a source. The Sale strip pattern sets it on a strong colour for the top of the shop, and is free.

Schedule it, so it ends by itself

On each product, or in a bulk edit, set sale dates using "Schedule" beside the sale price. The sale then starts and ends on time, and every sale row and badge follows by itself, without anyone touching the page. A variable product is on sale if a variation is, so check what the row shows for those. Cached pages can lag behind a date change, so clear the cache as a sale starts or ends.

Countdowns: only real ones

A countdown that restarts for each visitor is a false statement, and in the EU, the UK and elsewhere consumer law takes an interest in fake urgency. A countdown should only read the real sale end date. Flash sale does that, with a stock bar that reads actual stock. If the sale has no end date, it shows no clock, which is the right behaviour.

Price displays in the EU

If you sell in the EU, the Omnibus rules require a price reduction to refer to the lowest price in the prior 30 days. WooCommerce does not handle that by itself. Check with whoever advises you on this, and consider a plugin for it if you run many sales.

Questions

What is the WooCommerce sale products shortcode?

[sale_products] is the older one, and [products on_sale="true"] is the current form, which also takes columns, limit and paginate.

How do I get all products on sale in code?

wc_get_product_ids_on_sale() returns their IDs, and is cached.

Do I need a plugin for a sale slider?

Not for a simple row, as the Product Collection block has a carousel. You need a plugin for autoplay, effects or a countdown.

More guides