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
| Package | Purpose |
|---|---|
hotelresort.zip | The main theme (design, layout, templates). |
hotelresort-child.zip | Optional child theme — put your own changes here so theme updates never overwrite them. |
hotelresort-core.zip | Required 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
- WordPress 6.0 or newer, PHP 7.4 or newer
- Optional: Elementor (free version is enough — Elementor Pro is not required)
2. Installation
- In WordPress go to Plugins → Add New → Upload Plugin, choose
hotelresort-core.zip, install and activate. - Go to Appearance → Themes → Add New → Upload Theme, choose
hotelresort.zip, install and activate. - Optional: install
hotelresort-child.zipthe same way and activate the child theme instead of the parent. - Optional: install the free Elementor plugin if you want to use the HotelResort widgets.
3. Demo import
Go to Rooms → Demo Import. Four demos are available: Luxury Hotel, Beach Resort, Mountain Resort and Boutique Villa.
- Read the notice, tick the confirmation box, and click Import Demo on the demo you like.
- Watch the progress log. The import runs in small steps: site settings → amenities → pages & menu → photos → rooms.
- 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
- Nothing you already have is deleted or overwritten — content with the same title is skipped.
- Your previous site settings are backed up before they are changed.
- Remove Imported Demo (shown after an import) deletes only what the importer created and restores your previous settings.
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
| Template | Use it for |
|---|---|
| Home | A 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. |
| Amenities | Lists all amenities. |
| Full Width | Header and footer, no content width limit — good with Elementor. |
| Canvas | No 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:
| Field | Notes |
|---|---|
| Price per night | Number only. Shown as “From X / night”. |
| Max guests | Whole number, minimum 1. |
| Bed type | Single, Twin, Double, Queen, King, Bunk. |
| Room size | Number only (shown in m²). |
| View type | Sea, Garden, City, Mountain, Pool, No view. |
| Room gallery | Pick several images from the Media Library. |
| Booking / inquiry link | Optional 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:
| Widget | What it does |
|---|---|
| Room Card | One room; choose it from a list; set the button text. |
| Room List | A grid of rooms: number, columns per device, filter by amenities, order by date/title/price. |
| Amenities | A grid of all or selected amenities, with optional check icon. |
| Offers | Promotional 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.
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
| Problem | Fix |
|---|---|
| No Rooms menu | Activate the HotelResort Core plugin. |
| HotelResort widgets missing in Elementor | Activate 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 import | Your server could not download them (firewall or no outbound access). The rest of the demo still imports; add your own photos. |
| Changes don't show | Clear 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 arrive | Check spam, then install an SMTP plugin (see section 7). |
10. Credits & licenses
- Theme and plugin code: GNU General Public License v2 or later (see
license.txtin each package). - The screenshot and the placeholder images bundled in the theme are original artwork generated for this product.
- Demo photography is not included in the download. The importer downloads sample photos from Pexels (Pexels License: free for commercial use, no attribution required). Each demo file lists the title, photographer and source of every photo (
hotelresort-core/demos/*/demo.json). You may not resell the photos as-is, so replace them with your own photography for your real site. - Elementor is a separate plugin by its own authors and is not bundled.
11. Changelog
0.1.0 — first release
- Theme: responsive layout, Home / Amenities / Full Width / Canvas templates, Rooms archive and single room, blog, Customizer colors and hero image, child theme.
- Plugin: Room post type, Amenities taxonomy, room details, Elementor widgets (Room Card, Room List, Amenities, Offers), inquiry form, demo importer with four demos.