Liftora documentation

Liftora home page

A WordPress theme for gyms, fitness studios, functional fitness boxes, yoga and pilates studios, boxing clubs and personal trainers. Six demos, a weekly class timetable, membership plans with a monthly / yearly switch, a BMI calculator, a busy-times chart, member transformations, trainer profiles and a free trial form.

Thank you for choosing Liftora. This guide takes you from a fresh WordPress site to a copy of the demo with your own details. If something is not covered here, write to support@codememory.com — we answer within one working day.

  • Version1.0.0
  • WordPress6.5 or later
  • PHP7.4 or later
  • Live demoOpen the demo

Highlights

  • Six fitness demos imported in one click
  • Weekly class timetable with type filters and day tabs on phones
  • Free trial form that only offers real class times
  • Membership plans with a monthly / yearly switch
  • BMI calculator in metric and imperial
  • "Best time to train" busy-times chart
  • Member transformations with before and after numbers
  • Classes with sessions, intensity, level and calories
  • Class finder in the hero
  • Trainer profiles with qualifications and coaching days
  • Opening hours with an "Open now" badge
  • Reviews, FAQ, steps, stats, ticker and a blog
  • 20 Elementor widgets (free Elementor)
  • Every section also works as a shortcode
  • Call / free class bar on phones
  • Light and dark mode
  • Colours and fonts from the Customizer
  • Block patterns and every core block styled
  • Self-hosted fonts, nothing loaded from Google
  • Translation ready, right-to-left support
  • Child theme included

What is in the download

themeforest-liftora-wordpress-theme/
├── liftora.zip               ← the theme: upload this in WordPress
├── liftora-child.zip         ← child theme, for your own code changes (optional)
├── plugins/liftora-core.zip  ← the theme's plugin (also installed from inside the theme)
├── demo-content/             ← demo files for a manual import
├── documentation/            ← this guide, as HTML and PDF
└── licensing/                ← GPL licence, font licences and credits
Upload liftora.zip, not the whole download. Uploading the download zip gives the error "The package could not be installed. The theme is missing the style.css stylesheet."

Requirements

  • WordPress 6.5 or later (tested up to 7.1).
  • PHP 7.4 or later (8.2 or later recommended).
  • For the demo import: PHP memory_limit 256M, max_execution_time 300, upload size 32M. Most hosts already allow this; if an import stops half-way, ask your host to raise these values.

Every plugin the theme uses is free from wordpress.org. Nothing needs a paid licence.

Installing the theme

  1. In your dashboard, go to Appearance → Themes → Add New Theme → Upload Theme.
  2. Choose liftora.zip and click Install Now, then Activate.
  3. Optional: install and activate liftora-child.zip the same way (see Child theme).

Upload by FTP instead: unzip liftora.zip and copy the liftora folder to wp-content/themes/, then activate it under Appearance → Themes.

Plugins

After activation, a notice at the top of the dashboard lists the plugins the theme uses. Click Begin installing plugins (or go to Appearance → Install Plugins), select them all, choose Install, then activate them.

PluginWhat it adds
Liftora CoreRequiredClasses, trainers, transformations, reviews, class types, goals, the class timetable, the free trial form, membership plans, the BMI calculator, the busy-times chart, opening hours, widgets, shortcodes and the demo import. Included with the theme.
ElementorRecommendedThe free page builder used for the demo pages. The theme's own widgets appear in Elementor's Liftora group.
One Click Demo ImportRecommendedImports a demo in one click. You can remove it after the import.

The theme works without any plugin: posts, pages, menus, widgets and search are styled the same. The plugin is needed for the gym features (classes, timetable, trainers, transformations, free trial form…).

Importing a demo

The import gives you the demo site: pages, classes, trainers, transformations, reviews, posts, menus, widgets and the Customizer settings. Use it on a new site: it adds content next to what you already have.

  1. Install the plugins above.
  2. Go to Appearance → Import Demo Data.
  3. Pick a demo and click Import. It takes one to three minutes; keep the page open.
  4. Done: visit your site. The home page, menus and blog page are already set.
DemoHome pageAccent
Strength gym/home-gym/#c6f432
Functional fitness box/home-box/#ff6a1a
Yoga & pilates studio/home-yoga/#b4532a
Personal trainer/home-trainer/#2346ff
Boxing club/home-boxing/#df2228
Boutique fitness studio/home-studio/#d81b60

All six home pages are imported with every demo; the demo you pick decides which one is the front page and which colours and header the Customizer uses. To switch later, go to Settings → Reading and choose another home page.

The photos on the live demo are licensed for the demo only, so the import uses grey placeholder images. Replace them with your own photos (Media → Library, or the featured image of each item).

Manual import

If the one-click import is blocked by your host, use the files in demo-content/:

  1. Tools → Import → WordPress (install the importer when asked) → upload content.xml.
  2. Install Widget Importer & Exporter → Tools → Widget Importer & Exporter → upload widgets.wie.
  3. Install Customizer Export/Import → Appearance → Customize → Export/Import → upload customizer-<demo>.dat.
  4. Appearance → Menus → Manage Locations: set the main, top bar and footer menus. Settings → Reading: choose the home and blog pages.

After the import: your details

The demo uses a made-up phone number, address, opening hours, timetable and prices. Replace them with yours, in this order:

  1. Phone number and top bar: Appearance → Customize → Liftora options → Header and top bar. Set Phone number, Top bar text (a short line such as your opening hours) and the Label next to the phone (the demo says "First class free"). Every "Call" button on the site uses this number.
  2. Logo and site icon: Appearance → Customize → Site Identity.
  3. Colours: Appearance → Customize → Colors. The six demo home pages each have their own accent colour (see Page options); clear it there to use the Customizer colour.
  4. Opening hours, busy times, trial page and emails: Settings → Liftora Core (see Opening hours and busy times and Free trial requests).
  5. Your classes and timetable: edit each class under Classes and set its sessions (see Class timetable).
  6. Footer widgets: Appearance → Widgets → Footer column 1–4: edit the Contact details widget (address, phone, email).
  7. Your content: edit the trainers, transformations and reviews in the dashboard menus of the same names, and replace the placeholder photos with your own.

Classes, trainers, transformations and reviews

The Liftora Core plugin adds four content types, a Class types list and a Goals list to the dashboard. Each content type has a Details box under the editor.

MenuUsed forDetails
Classes
/classes/
One page per class or service (including personal training). Shown by the Classes and Class timetable widgets and the classes archive, and listed in the free trial form and the class finder.Icon, drop-in price ("$18"), price note ("free with Full Access"), length in minutes, level ("All levels"), intensity from 1 to 5 (shown as bars), calories ("400–550 kcal"), room, best for, sessions (see Class timetable), what you will do (one per line) and an "At a glance" list (one line per item as label|value, for example Group size|Up to 10 people).
Trainers
/trainers/
Your coaches, teachers and personal trainers.Role, years coaching, qualifications, focus, the days they coach, a motto and an optional email. The featured image is the portrait (a tall photo works best). Each profile has a Train with button that opens the free trial form with that trainer chosen.
Transformations
/transformations/
Member success stories. Shown by the Transformations widget as cards, newest first.Date, result ("−18 kg", "120 kg"), how long it took ("8 months"), plan ("Barbell Strength"), coach, numbers before and after (one per line as measure|before|after, for example Deadlift|0 kg|120 kg) and how they did it (one line per phase as phase|what).
ReviewsMember reviews shown by the Reviews widget (no page of their own).Rating, member line ("Member since 2025"), class or plan, where the review was left. The title is the member's name; the text is the review. The Reviews widget can show only some reviewers (Only these reviewers, names comma separated) or only reviews that mention some classes.

Class types (under Classes) group classes, for example Strength, HIIT or Yoga & pilates. Each type has its own page at /class-type/<name>/, and the Class types widget shows each one as a photo tile with its number of classes. Goals (also under Classes) group classes and transformations by what members want, for example Lose weight or Build strength. A class can have several of each.

Turn on Show filter buttons in the Transformations widget (or filter="yes" in the shortcode) to add a button per goal above the cards.

The featured image of a class, transformation or post is used on its card and at the top of its page. Use landscape photos at least 1600 × 900 px.

Class timetable

Each class has a Sessions field: one line per session as days|time|coach|room, for example:

Mon,Wed,Fri|06:30|Marcus|Iron room
Tue-Thu|18:30|Jade|Iron room
Sat|09:00|Marcus|Iron room

Days can be one day (Sat), a list (Mon,Wed,Fri), a range (Mon-Fri) or every day. Times use the 24-hour clock. Leave the field empty for classes booked by appointment, such as personal training.

  • The Class timetable widget (or [liftora_timetable]) builds the week from every class's sessions: one column per day, today highlighted, a colour per class type and a Try free link on each session that opens the free trial form with the class, day and time filled in.
  • Show filter buttons adds a button per class type; Only these class types limits the timetable, for example type="mind-body" for a yoga page.
  • On phones and tablets the timetable shows one day at a time with day tabs, starting with today.
  • Each class page lists its own sessions under When it runs, and class cards show the days.

Free trial requests

The Free trial form widget (or the [liftora_trial] shortcode) asks for the class to try (or a gym floor visit), an optional trainer, the day and the time, the visitor's name, phone and email, their main goal, how much they train now, how to confirm (text message, phone call or email) and an optional message. Name, day, time and a phone number or email are required. Spam protection is built in (a hidden field and a limit on repeated sends) and no other plugin is needed.

  • Times that are real: pick a class and a day and the time list shows only that class's sessions on that day; days without the class say which days it runs. With no class picked, the form offers gym floor visit times inside your opening hours. The same check runs again on the server when the form is sent.
  • Every request is saved under Free trials in the dashboard, with a counter of new ones. Open a request to see the details and set its status: New, Called back, First visit booked, Came in, Joined, No-show, Did not join.
  • Settings → Liftora Core → Free trial requests: choose the Free trial page (the page with the Free trial form widget), the minutes between gym floor visit times, turn email alerts on or off, choose the address (empty = the site admin email) and edit the thank-you message and the privacy note.
  • Emails are sent by WordPress. If they do not arrive, install an SMTP plugin such as WP Mail SMTP; requests are saved in the dashboard either way.

The class finder

Turn on Show the class finder in the Hero widget. Visitors pick a class and a day and press Try it free: the free trial page opens with both filled in, ready to choose a time. The Try this class free button on each class page, the Train with button on each trainer and the timetable's Try free links open the same form.

Opening hours and busy times

Settings → Liftora Core → Opening hours and busy times: set an opening and a closing time for each day. Leave both empty on days you are closed, and add an optional note (for example "Coaches on the floor at every opening hour").

  • The Opening hours widget (Elementor) or [liftora_hours] shortcode shows the hours beside your address and phone number. The Liftora: Opening hours widget shows them in the sidebar or footer.
  • Today's row is highlighted, and a badge says Open now (with the closing time) or Closed now. The badge uses the time zone in Settings → General, and it is worked out in the visitor's browser, so it stays right even when your pages are cached.
  • Busy times: one line per period as days|from-to|level, for example Mon-Thu|17-20|packed. Levels are quiet, steady, busy and packed; open hours you do not list count as quiet.
  • The Best time to train widget (or [liftora_crowd]) turns those lines into an hour-by-hour chart for each day, with day tabs, today picked and the current hour marked ("Right now: usually steady").
  • The week starts on the day set in Settings → General → Week Starts On; times use the time format set there.

Membership plans and the BMI calculator

The Membership plans widget (or [liftora_pricing]) shows one card per plan. Each line is Name|Price|Note|Feature; Feature|yes|Button text|Button link|Yearly price|Yearly note; write yes in the fifth part to highlight a plan. Turn on Show a Monthly / Yearly switch to let visitors swap every card to its yearly price, and add a badge such as "2 months free".

The BMI calculator widget (or [liftora_bmi]) works in metric (cm, kg) and imperial (ft, in, lb), shows the result on a coloured scale with the category and a tip you can edit for each category, and an optional button (for example to the free trial page). Nothing is saved or sent anywhere: the result is worked out in the visitor's browser. A short health note is shown under the ranges; edit or clear it in the widget.

Page options

Each page has a Page options box in the editor sidebar:

  • Accent colour for this page: overrides the Customizer accent on this page only. The demo uses it to give each demo home page its own colour.
  • Colour scheme: light or dark for this page only (the Strength gym, Functional fitness box and Boxing club demos are dark).
  • Header layout: classic, centered or contact, for this page only.

Leave them empty to follow the Customizer.

Page templates

TemplateUse
DefaultPage title band, content and no sidebar.
Full width, no titleFor pages built with Elementor: the content fills the screen and you add your own hero. All demo pages use it.
Full width with title bandThe title band, then full-width content.

Customizer settings

Appearance → Customize. Colours are in the Colors section; everything else is in the Liftora options panel. Changes show in the preview before you publish them.

SettingTypeDefault
Colors
Accent colour (buttons, links, icons)color#c6f432
Ink colour (text, header, footer)color#121315
Paper colour (page background)color#f1f2ee
Style and fonts
Colour schemeselectLight
Show a light/dark switch in the headercheckboxOn
Heading fontselectAntonio
Body fontselectEncode Sans
Body text size (px)number17
Corner rounding (px)number6
Header and top bar
Header layoutselectClassic: logo left, menu right
Keep the header visible while scrollingcheckboxOn
Show the search buttoncheckboxOn
Header button texttextempty
Header button linkurlempty
Show the top barcheckboxOn
Top bar text (for example your opening hours)textempty
Phone numbertextempty
Label next to the phone (for example "First class free")textempty
Footer
Widget columnsselect4
Footer text (links allowed). Leave empty for the site name and year.textareaempty
Show a back-to-top buttoncheckboxOn
Show the site name in large outline letters in the footercheckboxOn
Blog
Post list layoutselectGrid of cards
SidebarselectRight
Show the author on postscheckboxOn
Show the date on postscheckboxOn
Show related posts under each postcheckboxOn
Mobile call bar
Show a call / trial bar at the bottom of phone screenscheckboxOn
Second button text (the first button calls your phone number)textempty
Second button linkurlempty

The site title, tagline, logo, site icon, background and homepage settings are WordPress's own, in Site Identity, Background image and Homepage Settings.

Widgets

Appearance → Widgets. Areas: Blog sidebar and Footer column 1 to Footer column 4 (set the number of footer columns in the Customizer). The plugin adds three widgets, named Liftora: … in the widget list:

  • Contact details — phone, email, address, each with a link.
  • Opening hours — your hours from Settings → Liftora Core, with an "Open now" badge.
  • Classes list — links to your classes; the current class is highlighted.

Building pages with Elementor

All demo pages are built with the free Elementor plugin and the theme's widgets.

  1. Create a page, set its Template to Full width, no title, and click Edit with Elementor.
  2. Search for the widget or open the Liftora group in the left panel and drag a widget onto the page.
  3. Edit its text and options in the left panel. Every widget has a Background option (light, paper, dark or accent colour) so sections alternate like the demo.

The widgets fill themselves from your content: Classes, Class timetable, Class types, Transformations, Trainers, Reviews and Latest posts show the items you add in the dashboard. List fields (prices, steps, questions…) take one item per line, with the parts separated by |, as the help text under each field shows.

Elementor's own Google Fonts loading is switched off by the demo import, so the site keeps using the theme's self-hosted fonts.

Without Elementor: shortcodes

Every widget is also a shortcode, so you can build the same sections in the block editor: add a Shortcode block and type, for example:

[liftora_timetable filter="yes"]
[liftora_results count="6" filter="yes"]
[liftora_trial title="Claim your free class"]

Options are the same as in Elementor. In list options, separate items with || and parts with |. Images take an attachment ID (Media → Library → the number in the address) or a full URL.

Hero — [liftora_hero]
OptionWhat it does
layoutLayout
Choices: split, cover
primary_labelButton text
primary_urlButton link
show_phoneShow the phone number (from the Customizer)
secondary_labelSecond button text (when the phone is hidden)
secondary_urlSecond button link
badgesShort points, one per line
finderShow the class finder (class and day)
imagePhoto
ratingRating (for example 4.9/5)
rating_textRating note (for example "from 1,200 member reviews")
card_titleFloating card title
card_textFloating card text

Also: eyebrow, title, text.

Classes — [liftora_classes]
OptionWhat it does
countHow many
typeOnly these class types (slugs, comma separated, optional)
goalOnly this goal (slug, optional)
styleStyle
Choices: cards, icons
show_priceShow drop-in prices for classes with no timetable
more_labelButton under the grid
more_urlButton link

Also: eyebrow, title, text, columns, tone.

Class timetable — [liftora_timetable]
OptionWhat it does
typeOnly these class types (slugs, comma separated, optional)
filterShow filter buttons by class type
noteSmall print under the timetable

Also: eyebrow, title, text, tone.

Class types — [liftora_types]
OptionWhat it does
countHow many types (4 fills the row best)

Also: eyebrow, title, text, tone.

Transformations — [liftora_results]
OptionWhat it does
countHow many
typeOnly this class type (slug, optional)
goalOnly these goals (slugs, comma separated, optional)
filterShow filter buttons by goal
more_labelButton under the cards
more_urlButton link

Also: eyebrow, title, text, tone.

Reviews — [liftora_reviews]
OptionWhat it does
summarySummary line (for example "4.9 average from 1,200 reviews")
countHow many
programOnly reviews that mention these classes (comma separated, empty = all)
onlyOnly these reviewers, in this order (names, comma separated, optional)

Also: eyebrow, title, text, columns, tone.

Trainers — [liftora_team]
OptionWhat it does
countHow many
onlyOnly these trainers, in this order (names, comma separated, optional)

Also: eyebrow, title, text, columns, tone.

Numbers — [liftora_stats]
OptionWhat it does
itemsNumbers as Value|Label, one per line

Also: tone.

Why choose us — [liftora_features]
OptionWhat it does
itemsFeatures as icon|Title|Text, one per line. Icons: dumbbell, kettlebell, bolt, flame, bike, stopwatch, pulse, glove, apple, target, run, scale, lotus, rope, trophy, home, drop, award, sun, sparkle, heart, leaf, shield, clock, star, check, users, phone, calendar, tag, badge.
imagePhoto (optional)

Also: eyebrow, title, text, columns, tone.

How it works — [liftora_steps]
OptionWhat it does
itemsSteps as Title|Text, one per line

Also: eyebrow, title, text, tone.

Membership plans — [liftora_pricing]
OptionWhat it does
itemsOne plan per line: Name|Price|Note|Feature; Feature; Feature|yes (to highlight)|Button text|Button link|Yearly price|Yearly note
toggleShow a Monthly / Yearly switch (uses the yearly prices)
month_labelMonthly button text
year_labelYearly button text
year_badgeSmall badge on the yearly button (for example "2 months free")
featured_tagLabel on the highlighted plan
noteSmall print under the plans

Also: eyebrow, title, text, tone.

Questions — [liftora_faq]
OptionWhat it does
itemsQuestions as Question|Answer, one per line

Also: eyebrow, title, text, tone.

Call to action — [liftora_cta]
OptionWhat it does
button_labelButton text
button_urlButton link
show_phoneShow the phone number

Also: title, text, tone.

Trust strip — [liftora_trust]
OptionWhat it does
itemsPoints as icon|Text, one per line
styleStyle
Choices: row, ticker

Also: tone.

Latest posts — [liftora_posts]
OptionWhat it does
countHow many
categoryOnly this category (slug, optional)

Also: eyebrow, title, text, tone.

BMI calculator — [liftora_bmi]
OptionWhat it does
imagePhoto (optional)
tip_underTip for underweight
tip_healthyTip for a healthy weight
tip_overTip for overweight
tip_obeseTip for obese
noteSmall print (leave empty for the default health note)
button_labelButton under the result
button_urlButton link

Also: eyebrow, title, text, tone.

Best time to train — [liftora_crowd]
OptionWhat it does
noteSmall print (the chart uses Settings → Liftora Core → Busy times)

Also: eyebrow, title, text, tone.

Text and photo — [liftora_about]
OptionWhat it does
imagePhoto
badge_valueBadge number (for example 12)
badge_labelBadge text
pointsPoints, one per line
button_labelButton text
button_urlButton link
reversePhoto on the right

Also: eyebrow, title, text, tone.

Free trial form — [liftora_trial]
OptionWhat it does
layoutLayout
Choices: split, stacked
pointsPoints beside the form, one per line
buttonButton text
show_phoneShow the phone number

Also: eyebrow, title, text, tone.

Opening hours — [liftora_hours]
OptionWhat it does
addressAddress
map_urlDirections link (for example a map link)
show_phoneShow the phone number

Also: eyebrow, title, text, tone.

Shortcodes: [liftora_hero], [liftora_classes], [liftora_timetable], [liftora_types], [liftora_results], [liftora_reviews], [liftora_team], [liftora_stats], [liftora_features], [liftora_steps], [liftora_pricing], [liftora_faq], [liftora_cta], [liftora_trust], [liftora_posts], [liftora_bmi], [liftora_crowd], [liftora_about], [liftora_trial], [liftora_hours].

Block editor and patterns

Posts and simple pages use the WordPress block editor. Every core block is styled to match the theme, and the editor shows the theme's fonts and colours. Click + → Patterns → Liftora for ready-made sections: hero with call button, three services, call to action, questions and answers, three reviews, price table and contact details. The theme also adds block styles: Card (Group), Check marks (List), Eyebrow (Paragraph) and Framed (Image).

Blog

Settings → Reading → Posts page sets the page that lists your posts (the demo uses "Blog"). Choose a grid or list layout and the sidebar position in Customize → Liftora options → Blog. Posts show the author, date, category, share links (turn them off in Settings → Liftora Core) and related posts.

Light and dark mode

Customize → Liftora options → Style and fonts → Colour scheme: Light, Dark or Follow the visitor's device. With Show a light/dark switch on, visitors can switch with the moon button in the header; their choice is remembered on that device. A single page can be forced to light or dark in its Page options.

Child theme

If you want to change the theme's code, install liftora-child.zip and activate Liftora Child. Put your CSS in the child theme's style.css and your PHP in its functions.php; copy a template file from liftora into the child theme to override it. Theme updates replace the parent theme only, so your changes are kept.

Small style changes do not need a child theme: use Customize → Additional CSS.

Translation and right-to-left

Every text in the theme and the plugin can be translated. The templates are liftora/languages/liftora.pot and liftora-core/languages/liftora-core.pot.

  1. Easiest: install Loco Translate → Loco Translate → Themes → Liftora → New language, and translate in your browser. Do the same under Plugins for Liftora Core.
  2. Or use Poedit: open the .pot file, translate, and save the files as liftora-fr_FR.po/.mo in wp-content/languages/themes/.

Right-to-left languages (Arabic, Hebrew, Persian…) are supported: when WordPress runs in such a language, the layout mirrors automatically.

Updating

When a new version is released, download it from your ThemeForest Downloads page. Then either:

  • Appearance → Themes → Add New Theme → Upload Theme → choose the new liftora.zip → Replace current with uploaded; or
  • replace the wp-content/themes/liftora folder by FTP.

When the theme comes with a newer Liftora Core, the dashboard notice offers to update the plugin. Your content, menus, widgets and Customizer settings are kept. Changes you made to the parent theme's files are lost: keep them in the child theme.

Questions

"The package could not be installed. The theme is missing the style.css stylesheet."

You uploaded the whole download. Unzip it first and upload liftora.zip only.

The import stopped or shows an error.

Your host stopped the import early. Ask them to raise max_execution_time to 300 and memory_limit to 256M, then run the import again: items already imported are skipped.

The pages look plain after the import.

Activate Elementor and the theme's plugin, then reload. Without Elementor, the pages show the same sections through shortcodes.

Free trial request emails do not arrive.

Requests are always saved under Free trials. For email, check the address in Settings → Liftora Core and install an SMTP plugin such as WP Mail SMTP; many hosts block WordPress's default mail.

Where are the demo photos?

They are licensed for the live demo only, so the import uses placeholders. Add your own photos in Media → Library and set them as featured images.

How do I change the font?

Customize → Liftora options → Style and fonts → heading and body font. All fonts are included in the theme; no Google Fonts requests.

How do I remove the top bar or the phone bar on mobile?

Customize → Liftora options → Header and top bar → Show the top bar, and Mobile call bar.

Can I use the theme on more than one site?

A Regular licence covers one site (one end product). Buy one licence per site.

Support

Support is included with your purchase and covers questions about the theme's features and fixing bugs. It does not cover custom changes or problems caused by other plugins.

Email support@codememory.com with your purchase code and your site address. See the changelog for what changed in each version and third-party materials for credits.