Tavolune documentation

Tavolune home page

A WordPress theme for restaurants, bistros, trattorias, cafes, steakhouses, fine dining rooms and wine bars. Six demos, a printed-style menu with a dietary filter, a tasting menu card, table reservations from your lunch and dinner services, events, a photo gallery and opening hours with an "Open now" badge.

Thank you for choosing Tavolune. 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 restaurant demos imported in one click
  • Booking bar in the hero: pick guests and a day, land on the reservation form
  • Printed-style menu with section tabs and a vegetarian / vegan / gluten-free / dairy-free filter
  • Dish pages with price, dietary marks, badge, origin, wine pairing, ingredients and allergens
  • Tasting menu card: course by course, wine per course, price per guest and a "Book" button
  • Table reservations with times from your lunch and dinner services, seating areas, occasions and a set-menu estimate, saved in your dashboard
  • Events with dates, seats, an evening timeline and "Reserve a seat"
  • Photo gallery with category filters and a full-size viewer
  • Team profiles with role, signature dish, training and where to find them
  • Opening hours with two services a day and an "Open now" badge
  • Private dining packages, wine flights and a gift card banner
  • Reviews, FAQ, steps, stats and a blog
  • 21 Elementor widgets (free Elementor)
  • Every section also works as a shortcode
  • Call / book-a-table 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-tavolune-wordpress-theme/
├── tavolune.zip               ← the theme: upload this in WordPress
├── tavolune-child.zip         ← child theme, for your own code changes (optional)
├── plugins/tavolune-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 tavolune.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 tavolune.zip and click Install Now, then Activate.
  3. Optional: install and activate tavolune-child.zip the same way (see Child theme).

Upload by FTP instead: unzip tavolune.zip and copy the tavolune 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
Tavolune CoreRequiredMenu (dishes), menu sections, events, event types, team, reviews, table reservations, opening hours, tasting menu card, photo gallery, gift card banner, 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 Tavolune 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 restaurant features (menu, tasting menu, events, gallery, team, table reservations…).

Importing a demo

The import gives you the demo site: pages, dishes, menu sections, events, team, 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
Neighbourhood bistro/home-bistro/#5b6a2e
Trattoria & pizzeria/home-trattoria/#b0392a
Cafe & brunch/home-cafe/#8a4b1f
Grill & steakhouse/home-steakhouse/#c8763a
Fine dining/home-finedining/#2f4a5c
Wine bar & small plates/home-winebar/#7a2335

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, menu and prices. Replace them with yours, in this order:

  1. Phone number and top bar: Appearance → Customize → Tavolune options → Header and top bar. Set Phone number, Top bar text (a short line such as "Lunch & dinner Tue – Sun") and the Label next to the phone (the demo says "Gift cards available"). 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, reservations and set menus: Settings → Tavolune Core (see Opening hours and Table reservations).
  5. Footer widgets: Appearance → Widgets → Footer column 1–4: edit the Contact details widget (address, phone, email).
  6. Your menu and content: edit the dishes, events, team and reviews in the dashboard menus of the same names, and replace the placeholder photos with your own.

Menu, events, team and reviews

The Tavolune Core plugin adds four content types, a Menu sections list (for dishes) and an Event types list (for events) to the dashboard. Each content type has a Details box under the editor.

Dashboard menuUsed forDetails
Menu (dishes)
/dishes/
One entry per dish or drink. Shown by the Menu, Dish cards and Menu sections widgets, and each dish has its own page.Price ("$24"), price note ("for two to share" or "glass $12 · bottle $48"), dietary marks (vegetarian, vegan, gluten-free, dairy-free, contains nuts, spicy), badge ("Chef's pick"), sourced from ("Day boat, Fairhaven"), pairs with ("Glass of Chablis"), an icon, "On the plate" (one ingredient per line) and an "At a glance" list (one line per item as label|value, for example Allergens|Fish, milk).
Events
/events/
Wine dinners, live music, classes, supper clubs. Upcoming events are listed first; when none are left the latest past ones are shown.Date, time ("7:00 pm – 10:30 pm"), price ("$95 per guest"), what is served, hosted by, seats and "The evening" (one line per moment as time|what). Each event has a Reserve a seat button that opens the reservation form on that day.
Team
/team/
Your chefs, sommelier, front of house and baristas.Role, years in kitchens, trained at, signature, where to find them ("On the pass Tuesday to Saturday") and an optional email. The featured image is the portrait (a tall photo works best).
ReviewsGuest reviews shown by the Reviews widget (no page of their own).Rating, guest ("Regular since 2019"), dish or visit ("Tasting menu"), where the review was left. The title is the guest's name; the text is the review. The Reviews widget can show only reviews about some dishes (for example pici,tasting menu).

Menu sections (under Menu) group dishes, for example Starters, Mains or Wine & cocktails. Each section has its own page at /menu/<name>/, and the Menu sections widget shows each one as a photo tile with its number of dishes. The order of the sections follows the order you created them in. Event types (under Events) group events; turn on Show filter buttons in the Events widget to add a button per type.

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

Table reservations

The Table reservation widget (or the [tavolune_reservation] shortcode) asks for the number of guests, the day, a time, where to sit, the occasion, the menu, the guest's name, phone and email, how to confirm (text message, phone call or email) and allergies or special requests. Guests, day, time, name 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 from your services: once a day is picked, the time list only shows start times inside that day's lunch and dinner services, up to your last table before closing. Closed days say so. The same check runs again on the server when the form is sent.
  • Set menus and an estimate: list your menus as Name|price per guest (for example Seven-course tasting menu|85, and À la carte|0). When a guest picks a priced menu, the form shows an estimate for the whole party; the saved request gets its own estimate, worked out from your prices on the server.
  • Every request is saved under Reservations in the dashboard, with a counter of new ones. Open a request to see the details and set its status: New, Confirmed, On the waiting list, Seated, No-show, Cancelled.
  • Settings → Tavolune Core → Table reservations: choose the Reservations page (the page with the Table reservation widget), the minutes between times, the last table before closing, the largest party bookable online, your seating areas, your set menus, the currency symbol, email alerts and their address (empty = the site admin email), the thank-you message and the privacy note.
  • Requests are not confirmed tables: you confirm each one the way the guest chose.
  • 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 booking bar

Turn on Show the booking bar in the Hero widget. Visitors pick the number of guests and a day and press Find a table: the reservations page opens with both filled in, ready to choose a time. The Reserve a seat button on each event and the Book the tasting menu button open the same form with the day or the menu chosen.

Opening hours

Settings → Tavolune Core → Opening hours: set up to two services a day (for example lunch 12:00–15:00 and dinner 18:00–22:30). Leave the second pair empty for one service, and every time empty on days you are closed. Add an optional note (for example "The kitchen takes its last orders 30 minutes before closing").

  • The Opening hours widget (Elementor) or [tavolune_hours] shortcode shows the hours beside your address and phone number. The Tavolune: Opening hours widget shows them in the sidebar or footer.
  • Today's row is highlighted, and a badge says Open now · until …, Closed now · opens at … or Closed. 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.
  • The same hours decide which times the reservation form offers.
  • The week starts on the day set in Settings → General → Week Starts On; times use the time format set there.

Gift cards, private dining and packages

The Gift card banner widget (or [tavolune_giftcard]) shows a gift voucher drawn in your accent colour with your site name, a title, a short text, the amounts you sell (one per line) and a button. Link the button to your shop, your phone number or a contact page; the theme does not sell gift cards itself.

The Set menus & packages widget (or [tavolune_pricing]) shows price cards, one per package, with what is included and a button: private dining, wine flights, group menus. Mark one as featured to highlight it.

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 Grill & steakhouse demo is 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 Tavolune options panel. Changes show in the preview before you publish them.

SettingTypeDefault
Colors
Accent colour (buttons, links, icons)color#5b6a2e
Ink colour (text, header, footer)color#241b15
Paper colour (page background)color#f4eee3
Style and fonts
Colour schemeselectLight
Show a light/dark switch in the headercheckboxOn
Heading fontselectDM Serif Display
Body fontselectOnest
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 "Gift cards available")textempty
Footer
Widget columnsselect4
Footer text (links allowed). Leave empty for the site name and year.textareaempty
Show a back-to-top buttoncheckboxOn
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 / reservation 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 Tavolune: … in the widget list:

  • Contact details — phone, email, address, each with a link.
  • Opening hours — your hours from Settings → Tavolune Core, with an "Open now" badge.
  • Dishes list — links to your dishes; the current dish 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 Tavolune 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: Menu, Dish cards, Menu sections, Events, Team, 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:

[tavolune_menu tabs="yes" diet_filter="yes"]
[tavolune_events count="6" filter="yes"]
[tavolune_reservation title="Book a table"]

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 — [tavolune_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 booking bar (guests and day)
imagePhoto
ratingRating (for example 4.8/5)
rating_textRating note (for example "from 1,200 guest reviews")
card_titleFloating card title
card_textFloating card text

Also: eyebrow, title, text.

Menu — [tavolune_menu]
OptionWhat it does
menuOnly these menu sections (slugs, comma separated, optional)
tabsShow tabs to pick one section
diet_filterShow the dietary filter (vegetarian, vegan, gluten-free…)
descriptionsShow dish descriptions
noteSmall print under the menu

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

Dish cards — [tavolune_dishes]
OptionWhat it does
countHow many
menuOnly these menu sections (slugs, comma separated, optional)
styleStyle
Choices: cards, icons
show_priceShow prices
more_labelButton under the grid
more_urlButton link

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

Menu sections — [tavolune_sections]
OptionWhat it does
countHow many sections (4 fills the row best)

Also: eyebrow, title, text, tone.

Tasting menu card — [tavolune_tasting]
OptionWhat it does
menu_nameMenu name (also chosen on the reservation form when it matches a menu in the settings)
servedWhen it is served (for example "Seven courses · Tuesday to Saturday")
coursesCourses as Course|Dish|Wine pairing, one per line
pricePrice (for example $85)
price_notePrice note (for example "per guest")
pairing_priceWine pairing (for example "Wine pairing $55 per guest")
noteSmall print (for example "Whole table, please. Tell us about allergies.")
imagePhoto (optional)
button_labelButton text
button_urlButton link (empty = the reservations page with this menu chosen)

Also: eyebrow, title, text, tone.

Events — [tavolune_events]
OptionWhat it does
countHow many
occasionOnly these event types (slugs, comma separated, optional)
filterShow filter buttons by event type
more_labelButton under the events
more_urlButton link

Also: eyebrow, title, text, tone.

Photo gallery — [tavolune_gallery]
OptionWhat it does
itemsPhotos as Image|Caption|Category, one per line. Image = the media library ID or the image address (Media → the photo → Copy URL).
filterShow filter buttons by category
more_labelButton under the gallery
more_urlButton link

Also: eyebrow, title, text, tone.

Reviews — [tavolune_reviews]
OptionWhat it does
summarySummary line (for example "4.8 average from 1,200 reviews")
countHow many
dishOnly reviews that mention these dishes or visits (comma separated, empty = all)

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

Team — [tavolune_team]
OptionWhat it does
countHow many

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

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

Also: tone.

Why choose us — [tavolune_features]
OptionWhat it does
itemsFeatures as icon|Title|Text, one per line. Icons: cutlery, cloche, chef, wine, coffee, cocktail, fish, flame, wheat, chili, sprout, bowl, cake, bread, pizza, music, ticket, table, gift, candle, bottle, home, drop, award, sun, sparkle, heart, leaf, shield, clock, star, check, users, phone, calendar, tag, badge, pin.
imagePhoto (optional)

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

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

Also: eyebrow, title, text, tone.

Set menus & packages — [tavolune_pricing]
OptionWhat it does
itemsOne package per line: Name|Price|Note|Feature; Feature; Feature|yes (to highlight)|Button text|Button link
noteSmall print under the packages

Also: eyebrow, title, text, tone.

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

Also: eyebrow, title, text, tone.

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

Also: title, text, tone.

Trust strip — [tavolune_trust]
OptionWhat it does
itemsPoints as icon|Text, one per line

Also: tone.

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

Also: eyebrow, title, text, tone.

Gift card banner — [tavolune_giftcard]
OptionWhat it does
amountsAmounts, one per line (for example $50)
button_labelButton text
button_urlButton link

Also: title, text, tone.

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

Also: eyebrow, title, text, tone.

Table reservation — [tavolune_reservation]
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 — [tavolune_hours]
OptionWhat it does
addressAddress
map_urlDirections link (for example a map link)
show_phoneShow the phone number

Also: eyebrow, title, text, tone.

Shortcodes: [tavolune_hero], [tavolune_dishes], [tavolune_menu], [tavolune_sections], [tavolune_tasting], [tavolune_events], [tavolune_gallery], [tavolune_reviews], [tavolune_team], [tavolune_stats], [tavolune_features], [tavolune_steps], [tavolune_pricing], [tavolune_faq], [tavolune_cta], [tavolune_trust], [tavolune_posts], [tavolune_giftcard], [tavolune_about], [tavolune_reservation], [tavolune_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 → Tavolune 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 → Tavolune options → Blog. Posts show the author, date, category, share links (turn them off in Settings → Tavolune Core) and related posts.

Light and dark mode

Customize → Tavolune 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 tavolune-child.zip and activate Tavolune Child. Put your CSS in the child theme's style.css and your PHP in its functions.php; copy a template file from tavolune 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 tavolune/languages/tavolune.pot and tavolune-core/languages/tavolune-core.pot.

  1. Easiest: install Loco Translate → Loco Translate → Themes → Tavolune → New language, and translate in your browser. Do the same under Plugins for Tavolune Core.
  2. Or use Poedit: open the .pot file, translate, and save the files as tavolune-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 tavolune.zip → Replace current with uploaded; or
  • replace the wp-content/themes/tavolune folder by FTP.

When the theme comes with a newer Tavolune 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 tavolune.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.

Reservation request emails do not arrive.

Requests are always saved under Reservations. For email, check the address in Settings → Tavolune 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 → Tavolune 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 → Tavolune 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.