1. Introduction

HotelResort is a WordPress theme for hotels, resorts, villas, guest houses, boutique stays and vacation rentals. It focuses on presenting your rooms and collecting booking inquiries.

What is included

PackagePurpose
hotelresort.zipThe main theme (design, layout, templates).
hotelresort-child.zipOptional child theme — put your own changes here so theme updates never overwrite them.
hotelresort-core.zipRequired companion plugin: Rooms, Amenities, Elementor widgets, inquiry form and demo importer. Rooms and their data live in the plugin, so you keep them if you ever change themes.

What is not included

This version does not include a live booking engine, online payments or a real-time availability calendar. Guests send an inquiry and you reply by email.

Requirements

2. Installation

  1. In WordPress go to Plugins → Add New → Upload Plugin, choose hotelresort-core.zip, install and activate.
  2. Go to Appearance → Themes → Add New → Upload Theme, choose hotelresort.zip, install and activate.
  3. Optional: install hotelresort-child.zip the same way and activate the child theme instead of the parent.
  4. Optional: install the free Elementor plugin if you want to use the HotelResort widgets.
Install the plugin first. Without it the theme still works, but Rooms and Amenities will not be available.

3. Demo import

Go to Rooms → Demo Import. Four demos are available: Luxury Hotel, Beach Resort, Mountain Resort and Boutique Villa.

  1. Read the notice, tick the confirmation box, and click Import Demo on the demo you like.
  2. Watch the progress log. The import runs in small steps: site settings → amenities → pages & menu → photos → rooms.
  3. Visit your site to see the result.

What it changes

Site title, tagline, theme colors, homepage setting, primary menu and the home hero image. It also creates pages (Home, Amenities, Contact), amenities, three rooms and their photos.

Safety

Photos: demo photos are downloaded from the internet during import, so your server needs outbound access. They are sample images for preview — replace them with your own property photos before going live. See Credits.

4. Customization

Logo, title and tagline

Appearance → Customize → Site Identity. If no logo is set, the site title is shown.

Colors and hero image

Appearance → Customize → HotelResort Colors & Hero. Choose the Primary and Accent colors (buttons, links, highlights) and the Home hero image.

Menus

Appearance → Menus. Assign a menu to Primary Menu (header) and optionally Footer Menu.

Footer widgets

Appearance → Widgets → Footer 1, Footer 2, Footer 3. Empty columns are hidden automatically.

Page templates

TemplateUse it for
HomeA ready-made homepage: hero, featured rooms, amenities, call to action. The hero shows the page content if you write any, otherwise your site title and tagline.
AmenitiesLists all amenities.
Full WidthHeader and footer, no content width limit — good with Elementor.
CanvasNo header or footer — for landing pages.

Ordinary pages (About, Restaurant, Spa, Gallery, Offers…) use the default template; write them with the block editor or Elementor. The classic [gallery] grid is styled to match the theme; the Gallery block uses WordPress's own styling.

Child theme

Activate HotelResort Child, then add CSS to its style.css or override a template by copying it from the parent into the child with the same path.

5. Rooms & amenities

Use the Rooms menu. Each room has a title, description, featured image and a Room Details box:

FieldNotes
Price per nightNumber only. Shown as “From X / night”.
Max guestsWhole number, minimum 1.
Bed typeSingle, Twin, Double, Queen, King, Bunk.
Room sizeNumber only (shown in m²).
View typeSea, Garden, City, Mountain, Pool, No view.
Room galleryPick several images from the Media Library.
Booking / inquiry linkOptional external link. Leave empty to use the built-in inquiry form.

Add amenities under Rooms → Amenities and tick them on each room. The rooms list is at yoursite.com/rooms/.

6. Elementor widgets

With Elementor active, find the HotelResort group in the widget panel:

WidgetWhat it does
Room CardOne room; choose it from a list; set the button text.
Room ListA grid of rooms: number, columns per device, filter by amenities, order by date/title/price.
AmenitiesA grid of all or selected amenities, with optional check icon.
OffersPromotional cards you type in directly: image, badge, title, text, price, button and link.

7. Inquiry form

Each room page shows an inquiry form (unless the room has an external booking link). To add the form anywhere else, use the shortcode:

[hotelresort_inquiry]
[hotelresort_inquiry room_id="123"]

Without room_id guests choose a room from a list. Submissions are emailed to the site administrator address (Settings → General → Administration Email Address); replying goes straight to the guest.

To send inquiries elsewhere, add this to your child theme's functions.php:

add_filter( 'hotelresort_core_inquiry_recipient', function () {
    return 'bookings@yourhotel.com';
} );

Spam protection is built in (hidden field, minimum fill time, limit of 5 inquiries per hour per visitor) and needs no external service.

Many hosts send WordPress email unreliably. Install an SMTP plugin and send a test inquiry to confirm it reaches your inbox.

8. Translation

Text domains: hotelresort (theme) and hotelresort-core (plugin). Template files are in each package's languages folder (hotelresort.pot, hotelresort-core.pot). Translate with Loco Translate or Poedit and save the .po/.mo files in that folder, or use Loco's built-in location. Text you typed in pages or Elementor is translated with your multilingual plugin, not the .pot files.

9. Troubleshooting

ProblemFix
No Rooms menuActivate the HotelResort Core plugin.
HotelResort widgets missing in ElementorActivate Elementor and HotelResort Core; reload the editor.
/rooms/ shows “Page not found”Go to Settings → Permalinks and click Save Changes once.
Demo photos are missing after importYour server could not download them (firewall or no outbound access). The rest of the demo still imports; add your own photos.
Changes don't showClear your caching plugin / host cache and hard-refresh the browser.
Inquiry says “session expired”Reload the page (a cached page held an old security token) and submit again.
Inquiries never arriveCheck spam, then install an SMTP plugin (see section 7).

10. Credits & licenses

11. Changelog

0.1.0 — first release