1. Home
  2. Knowledge Base
  3. Bookings for WooCommerce
  4. How to show availability for multiple products on one calendar
  1. Home
  2. Knowledge Base
  3. How To Guides for Bookings for WooCommerce
  4. How to show availability for multiple products on one calendar

How to show availability for multiple products on one calendar

In Bookings for WooCommerce, you can show the availability of several bookable products on a single calendar using the [bfwc_availability_calendar] shortcode. Customers can see which products are free on each date, then click through to book.

Availability calendar for multiple products in Bookings for WooCommerce

This helps users to:

  • Compare the availability of several products on a month calendar
  • Browse future months
  • Click a product to open its page with that date selected

As the store owner, you can:

  • Show all of your bookable products, selected products or specific categories on a single calendar
  • Control how far ahead customers can browse
  • Choose whether the calendar links to your product pages

Add the calendar to a page

Add the shortcode to any page and the calendar will show all of your bookable products.

Step #1: Add a Shortcode block

  • Go to Pages > Add New, or open an existing page
  • Add a ‘Shortcode’ block to the page

You now have somewhere to place the calendar.

Step #2: Enter the shortcode

Enter this shortcode in the block:

[bfwc_availability_calendar]

The calendar will now include all of your published bookable products.

Step #3: Publish your page

Save and publish your page. Customers can now check availability across your products from one page. Now let’s look at how to choose which products appear.

Choose which products appear

Option #1: Select specific products

Use the products attribute with a comma-separated list of product IDs. The products appear in the order you list them.

[bfwc_availability_calendar products="12,34,56"]

To find a product’s ID, go to Products > All Products and hover over its name.

Option #2: Select product categories

Use the category attribute with a comma-separated list of category slugs. The products appear in alphabetical order.

[bfwc_availability_calendar category="venues,rooms"]

To find a category’s slug, go to Products > Categories. If you use both attributes, products takes priority and category is ignored.

Shortcode attributes

AttributeWhat it doesDefault
productsShows specific products, by IDAll bookable products
categoryShows products in specific categories, by slugAll categories
monthsSets how many months customers can browse, including the current month12
linkLinks available products to their product pages; use no to remove the linksyes

What will your customers see?

Customers see the current month, with each bookable product listed under each date. Past dates don’t list any products, and customers can use the arrows to move between months.

A colored dot shows the product’s status on that date, and a legend appears below the calendar:

StatusDot colorMeaningLinks to product?
‘Available’GreenNothing is booked on this dateYes
‘Partly booked’YellowSome places or time slots are bookedYes
‘Fully booked’RedNo places or time slots are left, or the date has been blockedNo
‘Not bookable’GrayThe product can’t be booked on this dateNo

Hover over a product on a day-based booking to see how many places are left on partly booked dates. On screens up to 600px wide, the calendar displays as a list of dates and hides past dates.

How is availability worked out?

The calendar uses the same availability data as your product pages. Its statuses take into account your bookings and these settings:

  • Disabled days of the week
  • First and last bookable dates
  • Unavailable dates, including dates blocked by ‘Custom Pricing’
  • Buffers
  • Dates imported from external calendars

Bookings made by a customer update the calendar for all customers, including multi-day bookings on each date they cover.

Example setups

These examples show how you can use the attributes for different types of business.

Example #1: Venue with several rooms

A venue hires out its Main Hall, Garden Room and Studio by the hour or by the day. List the rooms in the order you’d like them to appear:

[bfwc_availability_calendar products="101,102,103"]

A customer planning a Saturday event can see that the Main Hall is fully booked but the Garden Room is free. Clicking ‘Garden Room’ opens its product page with Saturday selected.

Example #2: Bike rental store

A bike rental store only wants to show bikes on its fleet page, not its accessories or guided tours. Put the bikes in a category with the slug bikes, then use:

[bfwc_availability_calendar category="bikes"]

Any new bike you add to the category will appear on the calendar automatically.

Example #3: Holiday cabins with a short booking window

A holiday park only takes bookings for the next six months. Use the months attribute to limit browsing:

[bfwc_availability_calendar category="cabins" months="6"]

Example #4: Availability display with no links

A community center wants to show room availability, but it takes bookings by phone. Remove the links from the calendar:

[bfwc_availability_calendar category="rooms" link="no"]

How does the calendar work with mixed duration bookings?

The calendar shows a date as ‘Partly booked’ as soon as any time slot is booked. If a product has mixed duration bookings enabled, that date can still be booked as a part day but not as a whole day.

When a customer clicks through, the product page opens with ‘Part day’ selected. They can then select ‘Full days’ and choose a date that’s completely free.

Change the start of the week

Go to WooCommerce > Settings > Bookings > Calendar, then update the ‘Start week on’ setting. The availability calendar uses the same setting as your booking calendars.

Bonus #1: Customize the calendar with code

Developers can use these filters to customize the calendar:

FilterWhat it changes
bfwc_availability_calendar_status_labelsThe status labels
bfwc_availability_calendar_product_idsThe products shown
bfwc_get_product_availability_for_rangeA product’s availability for a date range
bfwc_availability_calendar_month_htmlThe HTML for each month
bfwc_requested_date_ymdThe date selected when a customer clicks through

For example, this snippet changes ‘Partly booked’ to ‘Limited availability’:

add_filter( 'bfwc_availability_calendar_status_labels', function( $labels ) {
	$labels['partial'] = 'Limited availability';
	return $labels;
} );

Troubleshooting

The calendar says ‘There are no bookable products to show’. Check that the product IDs or category slugs are correct and that the products are published.

A product isn’t appearing. The calendar only shows products with the ‘Booking’ product type. It doesn’t show products set up as resources, because customers book those through a parent product.

A product has no link. Links only appear on ‘Available’ and ‘Partly booked’ dates. Also check that the shortcode doesn’t include link="no".

The date isn’t selected on the product page. The date won’t be selected if the customer can’t select it in that product’s calendar, or if the product has a preset date.

The availability looks out of date. Clear your site’s cache, then exclude the calendar page from page caching if the problem returns.

Was this article helpful?

Related Articles