Gym Directory Pro · v1.2.2

The class timetable, as a real calendar.

Seven columns, sticky weekday headers, a colour per class type and a booking link on every session. Filter by studio, level or class type. The front desk edits it in Excel.

INCLUDED IN EVERY WP DIRECTORIES LICENCE · FROM $99/YEAR

Seven-day calendar with sticky headers Day, type, studio & level filters Booking link on every class Front desk edits it in Excel
How it works

The timetable people actually read.

Most gym timetables online are a PDF, an image, or a table that gives up on a phone. This is a real weekly calendar, filterable, bookable, and editable by whoever is on the desk.

CALENDAR

Seven columns, sticky headers

The default view is the weekly grid: weekday headings that stay put as you scroll, times down the side and a colour per class type. On a narrow screen it scrolls sideways rather than collapsing, because comparing Tuesday with Thursday is the whole job.

VIEWS

List and cards from the same data

A chronological day list for people who read down, and paginated class cards for a richer layout with instructor photos. Set the default in settings, override it per page with an attribute. The old timeline name still works as an alias.

FILTERS

Day, class type, studio, level

Independent and combinable, plus search by class name or instructor. Class types render as compact scrollable checkboxes in the filter header, or as a dropdown that floats over the timetable instead of pushing it down the page when it opens.

RELIABILITY

An Apply button, on purpose

Studio and Level filter live where the site lets them. Caching layers and page builders sometimes stop that working, so every timetable also has an explicit Apply filters button as a fallback. Each instance initialises once, so a builder cannot attach the handlers twice.

BOOKING

Links out to the system you have

Each class carries a booking URL, an instructor, a studio, a level and a capacity. This is not a booking engine and does not pretend to be one: it sends the member to whatever you already run, which beats a second-rate payments flow bolted onto a timetable.

IMPORT

Verified before it says it worked

An import used to be able to report success when WordPress had not stored it. Now the plugin reads the data back first, keeps the previous timetable and shows an explicit write error when storage fails, and lists the active class types and studios on the settings page so you can confirm an import without leaving it.

CSV

Fourteen columns, one required

id, name, description, instructor, instructor_image, day, start_time, end_time, category, studio, level, capacity, booking_url, colour. Only name is required, and an invalid day, time, colour or booking URL names its exact spreadsheet row. Aliases such as trainer, room, type and class_name import without renaming anything.

The shortcodes

[gym_timetable] // weekly calendar by default
[gym_timetable view="list"] // chronological day list
[gym_timetable view="cards"] // paginated class cards
[gym_timetable day="Monday"] // one day, no selector
[gym_calendar] [gym_classes] [gym_timeline] // aliases
Who it's for

Anywhere a class runs to a schedule.

Gyms and fitness studios

The timetable is the page members visit most. Make it filterable and bookable rather than a PDF nobody opens on a phone.

Leisure centres

Several studios, several levels, one grid. Filter by studio so each room can have its own page.

Yoga, dance and martial arts

Instructor photos and a colour per class type, so the weekly grid reads at a glance instead of needing a key.

Clubs and community centres

Whoever runs the hall edits a spreadsheet. No WordPress training, no support call when the Tuesday class moves.

Questions

Gym Directory Pro, specifically.

Is this a booking system?

No, and it does not pretend to be. Every class carries a booking URL that sends the member to whatever system you already use. Building a payments and capacity engine is a different product, and bolting a bad one on would be worse than linking to a good one.

What does the calendar do on a phone?

Scrolls sideways, with the weekday headers staying put. Collapsing seven days into a stack destroys the thing a timetable is for, which is comparing Tuesday against Thursday at a glance. If you would rather have a vertical read on mobile, publish the list view on that page instead.

Can the front desk edit it?

That is the intended workflow. Export the timetable as CSV, edit it in Excel, save as CSV UTF-8, import. The importer reports the exact spreadsheet row when a name, day, time, colour or booking URL is wrong, so a typo is a named line rather than a silent gap.

What fields does a class have?

Name is required. Then description, instructor, instructor image, day, start time, end time, class type, studio, level, capacity, booking URL and colour. Times are 24-hour HH:MM. Empty optional fields render nothing.

Why is there an Apply filters button as well as live filtering?

Because caching and page builders interfere with live filtering on some sites, and a timetable that silently fails to filter is worse than one that needs a click. Studio and Level filter live where they can, and the explicit button is there as a fallback that always works.

Can two timetables share a page?

Yes. Each instance initialises separately with its own protection against duplicate handlers, which was added after page builders attached filter listeners twice. Calendar, list and cards can all appear on one page without fighting.

What happened in 1.2.1 and 1.2.2?

An import could report success while WordPress had not actually persisted it. Now the plugin reads the data back before reporting success, keeps the previous timetable and shows an explicit database-write error when storage fails, and new imports go to a versioned option that takes precedence over a stuck legacy snapshot. The old option is retained as a non-destructive fallback.

Get all four plugins Read the docs