Complete Guide: Building an Airbnb-Style Marketplace with HivePress
Let me walk you through the entire process step-by-step. This is how you build a property rental marketplace like Airbnb.
The User Journey:
Step 1: Install Required Plugins
You already have HivePress + all extensions. Now install:
- WooCommerce (required for payments) - even though you wont sell products, HivePress uses WooCommerce for payment processing
- Stripe for WooCommerce or PayPal Payments (payment gateways)
- Loco Translate (optional - for changing any text)
Step 2: Activate These HivePress Extensions:
- ✅ HivePress Bookings
- ✅ HivePress Marketplace
- ✅ HivePress Memberships
- ✅ HivePress Geolocation
- ✅ HivePress Reviews
- ✅ HivePress Messages
- ✅ HivePress Favorites
- ✅ HivePress Search
Step 3: Listings Settings
Go to HivePress > Settings > Listings
Enable:
- ☑️ Allow submitting listings
- ☑️ Allow editing listings
- ☑️ Allow claiming listings (optional - if you want to import listings and let hosts claim them)
- ☑️ Moderate listings (if you want to manually approve before they go live)
Disable:
- ☐ Allow purchasing listings (you're using Memberships instead)
Step 4: Bookings Settings ⭐ CRITICAL
Go to HivePress > Settings > Bookings
Configure:
- ☐ Unchecked = Instant Booking
- ☑️ Checked = Request-to-Book (host must approve)
How to enable time-based bookings - if you want hourly bookings
How to enable price extras - for add-ons like cleaning fees, pet fees
Step 5: Marketplace Settings 💰 COMMISSIONS
Go to HivePress > Settings > Marketplace
Configure:
Payment Flow:
- Guest books and pays $100
- You hold $100
- After stay completes, you release $85 to host, keep $15
- Host can request payout when balance reaches minimum
Step 6: Memberships Settings 🎫 PAY-TO-LIST
Go to HivePress > Settings > Memberships
Enable:
- ☑️ Require membership - Forces all vendors to choose a plan before listing
Now create your 3 plans:
Go to WordPress Dashboard > Memberships > Add New
Plan 1: Starter (Free)
- Name: Starter
- Price: $0
- Listing Submissions: 2
- Listing Duration: Unlimited (or 30 days)
- Description: "Perfect to get started"
Plan 2: Advanced ($18)
- Name: Advanced
- Price: $18/month (or one-time)
- Listing Submissions: 5
- Listing Duration: Unlimited
- Description: "Best for small hosts"
- Featured: ☑️ (shows badge on their listings)
Plan 3: Premium ($36)
- Name: Premium
- Price: $36/month
- Listing Submissions: 10
- Listing Duration: Unlimited
- Description: "For professional hosts"
- Featured: ☑️
Step 7: Geolocation Settings 📍
Go to HivePress > Settings > Geolocation
Configure:
This adds the location search field and displays maps on listing pages.
Step 8: Reviews Settings ⭐
Go to HivePress > Settings > Reviews
Enable:
- ☑️ Allow submitting reviews
- ☑️ Moderate reviews (optional)
Guests can leave reviews after their booking is complete (just like Airbnb).
Step 9: Messages Settings 💬
Go to HivePress > Settings > Messages
Enable:
- ☑️ Allow sending messages
This allows guests and hosts to communicate before/during bookings
This is where you define what information hosts provide about their properties. Think of Airbnb's property details.
Go to Listings > Attributes > Add New
Essential Attributes for Rental Properties:
1. Property Type (Select - Single)
- Type: Select
- Options:
- Display Area: Page (Primary)
- ☑️ Searchable
- ☑️ Filterable
- ☑️ Required
2. Bedrooms (Number)
- Type: Number
- Min: 0
- Max: 20
- Display Area: Page (Primary)
- ☑️ Searchable
- ☑️ Filterable
- ☑️ Required
3. Bathrooms (Number)
- Type: Number
- Min: 0
- Max: 10
- Display Area: Page (Primary)
- ☑️ Searchable
- ☑️ Filterable
- ☑️ Required
4. Max Guests (Number)
- Type: Number
- Min: 1
- Max: 50
- Display Area: Page (Primary)
- ☑️ Searchable
- ☑️ Filterable
- ☑️ Required
5. Beds (Number)
- Type: Number
- Min: 0
- Max: 20
- Display Area: Page (Primary)
- ☑️ Searchable
6. Square Footage (Number - Optional)
- Type: Number
- Suffix: sq ft
- Display Area: Page (Primary)
7. Amenities (Select - Multiple) ⭐ KEY FEATURE
- Type: Select
- Multiple: ☑️ (allows selecting multiple)
- Options:
- Display Area: Page (Secondary) - shows as icon list
- ☑️ Searchable
- ☑️ Filterable
8. House Rules (Textarea)
- Type: Textarea
- Display Area: Page (Secondary)
- Example: "No smoking, No parties, Check-in after 3 PM"
9. Cancellation Policy (Select - Single)
- Type: Select
- Options:
- Display Area: Page (Primary)
- ☑️ Required
10. Check-in Time (Time)
- Type: Time
- Display Area: Page (Secondary)
11. Check-out Time (Time)
- Type: Time
- Display Area: Page (Secondary)
12. Instant Booking (Checkbox - Optional)
- Type: Checkbox
- Display Area: Page (Primary)
- Label: "Enable instant booking (guests can book without approval)"
Display Areas Explained:
- Page (Primary): Shows prominently at top of listing page
- Page (Secondary): Shows in separate sections (like amenities grid)
- Search: Shows in search form only
- View: Shows in listing cards on search results
Step 10: Configure WooCommerce
- Go through WooCommerce setup wizard
- Set your currency (USD, EUR, etc.)
- Enable Stripe or PayPal gateway
Step 11: Enable Stripe Connect (for Marketplace)
- Install WooCommerce Stripe Gateway
- Get Stripe API keys from your Stripe Dashboard
- Enable Stripe Connect - this allows split payments (you + hosts)
- Hosts will connect their Stripe accounts to receive payouts
Step 12: Configure Vendors (Hosts)
Go to Vendors > Settings
Enable:
- ☑️ Allow registration (anyone can become a host)
- ☐ Moderate vendors (optional - approve hosts manually)
Hosts automatically get a vendor profile page at /vendor/username
Part 1: Pages HivePress Creates AUTOMATICALLY ❌ (Don't Create These)
These are static templates generated by HivePress. They exist automatically at these URLs:
Core Functional Pages:
/submit-listing - Add Listing form (where hosts submit properties)
/listing/property-name - Single Listing view (property detail page)
/listings - Listings archive (search results page)
/vendor/vendor-name - Vendor Profile page (host profile with their listings)
/vendors - All Vendors page (browse all hosts)
/register-vendor - Vendor Registration form (if direct vendor registration is enabled)
User Dashboard Pages (Automatic):
/account/ - Main Dashboard
/account/settings - User Settings (edit profile, password)
/account/listings - Manage My Listings (for hosts)
/account/orders - Bookings/Orders (for both hosts and guests)
/account/messages - Messages Inbox (with Messages extension)
/account/favorites - Saved/Favorited Listings (with Favorites extension)
/account/reviews - Reviews (given/received)
/account/vendor/dashboard - Vendor-specific dashboard (stats, earnings)
Membership Pages (Automatic with Memberships extension):
/select-plan - Choose Membership Plan (before adding listings)
Part 2: Pages YOU Need to Create in WordPress ✅
Go to WordPress Dashboard > Pages > Add New and create these:
Marketing/Static Pages (Design in Bricks):
| Page Name | Purpose | Where to Design |
|---|---|---|
| Home | Main landing page | Bricks Builder |
| About Us | Company info | Bricks Builder |
| How It Works | Guide for hosts/guests | Bricks Builder |
| Contact | Contact form | Bricks Builder |
| FAQ | Questions & answers | Bricks Builder |
| Terms of Service | Legal | Bricks or WordPress Editor |
| Privacy Policy | Legal | Bricks or WordPress Editor |
| Blog (optional) | News/articles | Bricks or WordPress Posts |
Configuration Pages (Special Purpose):
These pages need to be created and then assigned in HivePress settings:
| Page Name | Create? | Assign Where | Notes |
|---|---|---|---|
| Listings | ✅ Yes | HivePress > Settings > Listings > "Listings Page" | Leave blank (HivePress fills it with listings archive) |
| Vendors | ✅ Yes | HivePress > Settings > Vendors > "Vendors Page" | Leave blank (HivePress fills it with vendor profiles) |
How to assign:
- Create a blank page called "Listings"
- Go to HivePress > Settings > Listings
- In the "Listings Page" dropdown, select "Listings"
- Save
- Repeat for Vendors page
Part 3: What About the Dashboard, Messages, Vendor Listing View?
User Dashboard 🏠
- URL:
/account/ - Status: Automatically generated by HivePress
- Accessible: After user logs in
- Contains:
- Dashboard overview
- Links to Settings, Listings, Orders, Messages, etc.
- For vendors (hosts): Shows earnings, bookings, stats
- For customers (guests): Shows bookings, messages, favorites
Messages 💬
- Extension: Messages extension
- URL:
/account/messages - Status: Automatically generated
- How it works:
- Users click "Send Message" on a listing
- Modal form opens
- Message appears in
/account/messages - Email notifications sent
Vendor Listing View (Hosts Properties) 🏡
- What users see:
/vendor/host-name- Public profile showing all properties by that host - What vendors see:
/account/listings- Private dashboard to manage their listings
Part 4: Template Customization (Advanced)
If you want to customize the design of automatic pages:
- Go to HivePress > Templates
- Click Add New
- Choose template type:
- Listing View - Single property page
- Listing Search - Search results page
- Vendor View - Host profile page
- User Account - Dashboard pages
- Add Listing - Submit form
- etc.
- Customize using WordPress blocks (not Bricks!)
- Save
Part 5: Your Menu Structure
Understanding HivePress Integration
Option A: Use HivePress Templates (Recommended)
- Go to HivePress > Templates
- Customize these templates using WordPress blocks:
- Listing Single Page
- Listing Search Page
- Vendor Single Page
- Use CSS to style them to match your Bricks design
Option B: Custom Bricks Integration
Since HivePress uses blocks (not shortcodes), youll need a developer to:
- Create custom Bricks templates
- Query HivePress post types (
listing,vendor) - Build dynamic data bindings
- Homepage
- About page
- Contact page
- Custom landing pages
- Header and Footer
Follow These Steps in Order:
🎉 Congratulations!
You now have a complete understanding of how to build an Airbnb-style marketplace with HivePress. Follow each phase carefully, and youll have a fully functional rental platform.
Remember: Test everything thoroughly before launching, and always keep backups of your site!
YES! This is 100% possible and exactly what HivePress Bookings + Geolocation are designed for! ✅
You can create an Airbnb-style search on your homepage with:
- Location search (city, address, region)
- Check-in / Check-out dates (calendar picker)
- Search button → redirects to /listings with filters applied
Step-by-Step Setup:
Step 1: Enable Geolocation (Location Search)
- Install the Geolocation extension (you have it in your bundle)
- Go to HivePress > Settings > Geolocation
- Choose your provider:
- Mapbox (recommended - generous free tier)
- Google Maps (requires API key + billing)
- Add your API key
- Enable "Add search field"
- In Content Types, select Listings
- Save
Step 2: Enable Date Availability Search
- Go to HivePress > Settings > Bookings
- DISABLE these features (important!):
- ❌ "Allow multiple bookings per time period" (uncheck)
- ❌ "Enable time slots" (uncheck)
- Save
- Go to HivePress > Settings > Listings > Default Fields
- Find "Search Fields" section
- Add "Dates" field
- Optional: Remove "Keywords" field (you dont need keyword search if you have location + dates)
- Save
Step 3: Add Search Bar to Your Homepage (in Bricks)
Now you need to display the search form on your homepage. Heres how:
Option A: Use HivePress Block (Recommended)
- Edit your homepage in WordPress Block Editor (not Bricks initially)
- Add the "Listing Search Form" block (from HivePress blocks)
- The search bar will now show:
- Location field (from Geolocation)
- Dates field (Check-in/Check-out)
- Search button
- Save
To use in Bricks:
Since Bricks may not natively support HivePress blocks, you have two approaches:
- Approach 1: Create a WordPress page with the search block, then embed it in Bricks using a shortcode/iframe
- Approach 2: Use Bricks on the homepage BUT leave a section for the WordPress Block Editor to insert the HivePress search block
Option B: Link to Listings Page
If you want full Bricks design control:
- Design your homepage completely in Bricks
- Add a button/link: "Search Properties" → links to
/listings - Users will use the search bar on the
/listingspage instead
Step 4: How the Search Works
When a user:
- Enters location: "Los Angeles"
- Selects dates: June 1 - June 5
- Clicks "Search"
They are redirected to:
The listings page shows:
- Only properties available for those dates
- Only properties near that location (radius-based or region-based)
Additional Filter Options:
You can add more filters to the search bar in HivePress > Settings > Listings > Default Fields:
| Field | What It Does | When Available |
|---|---|---|
| Dates | Check-in/Check-out calendar | Bookings extension enabled |
| Guests | Number of guests | Enable "Allow multiple places per booking" in Bookings settings |
| Location | City/address search | Geolocation extension enabled |
| Price | Price range slider | Marketplace extension enabled |
| Categories | Property type (Villa, Apartment) | Always available |
| Custom Attributes | Bedrooms, Bathrooms, Amenities | Create in Listings > Attributes |
Example: Advanced Search Bar
To create a search like this:
Configuration:
- Geolocation: Enabled → adds Location
- Bookings Settings:
- ✅ Enable "Allow multiple places per booking"
- ❌ Disable "Allow multiple bookings per time period"
- HivePress > Settings > Listings > Default Fields > Search Fields:
- Add: Location (if not auto-added)
- Add: Dates
- Add: Guests
- Remove: Keywords (optional)
Sidebar Filters (On Listings Page)
The search bar handles primary filters (location, dates).
For additional filters (bedrooms, amenities, price), use the sidebar filter form on /listings:
- Go to Listings > Attributes
- Create custom attributes (e.g., "Bedrooms", "Pool")
- Check "Filterable" (displays in sidebar, not main search bar)
- Users will see these filters on the left side of the listings page
Important Notes:
- Disable "multiple bookings per time period" (this is for hourly/time-slot bookings)
- Disable "time slots"
- Otherwise, the Dates field wont appear in search
- Mapbox: https://account.mapbox.com/
- Create account → Get API key → Paste in HivePress settings
- Since HivePress uses blocks, not shortcodes, you may need to use a hybrid approach (WordPress blocks for search, Bricks for layout)
Recommended Homepage Design Flow:
- Large background image
- Headline: "Find your perfect vacation rental"
- Search bar (HivePress block or link to
/listings)
- "How it works" steps
- Trust badges
- Featured properties (use HivePress "Listings" block)
- "Become a Host" button → links to
/select-plan
🎯 Summary
With the proper configuration of HivePress Bookings and Geolocation extensions, you can create a fully functional Airbnb-style search experience. The key is properly configuring the date availability settings and integrating the search form into your homepage design.
Yes, absolutely! You can retrieve listing information using PHP code. HivePress stores all data in the WordPress database and provides methods to access it.
How to Get Listing Information:
1. Get Current Listing Object:
// On a listing page
$listing = hivepress()->request->get_context('listing');
// Or get by ID
$listing = \HivePress\Models\Listing::query()->get_by_id(123);
2. Get Listing Properties:
// Basic info
$listing_id = $listing->get_id();
$title = $listing->get_title();
$description = $listing->get_description();
$price = $listing->get_price();
// Images
$image_url = $listing->get_image__url('large');
$images = $listing->get_images();
// Location
$latitude = $listing->get_latitude();
$longitude = $listing->get_longitude();
// Dates (if using Bookings)
$created_date = $listing->get_created_date();
3. Get Categories:
// Get category IDs
$category_ids = $listing->get_categories__id();
// Get category objects
$categories = $listing->get_categories();
// Loop through categories
foreach ($categories as $category) {
echo $category->get_name();
echo $category->get_image__url();
}
4. Get Attributes (Amenities, Custom Fields):
// Replace 'amenities' with your attribute name
$amenities = $listing->get_amenities();
// For multi-select attributes
$amenity_values = $listing->get_amenities__name(); // Array of names
// Example: Get bedrooms, bathrooms, etc.
$bedrooms = $listing->get_bedrooms();
$bathrooms = $listing->get_bathrooms();
$pool = $listing->get_pool(); // Yes/No checkbox
$wifi = $listing->get_wifi();
5. Get Vendor Information:
$vendor_id = $listing->get_vendor_id();
$vendor = $listing->get_vendor();
if ($vendor) {
echo $vendor->get_name();
echo $vendor->get_email();
echo $vendor->get_phone();
echo $vendor->get_image__url();
}
Complete Example:
<?php
// Get listing by ID
$listing = \HivePress\Models\Listing::query()->get_by_id(123);
if ($listing) {
// Basic info
echo '<h2>' . $listing->get_title() . '</h2>';
echo '<p>Price: $' . $listing->get_price() . '/night</p>';
// Categories
echo '<h3>Property Type:</h3>';
foreach ($listing->get_categories() as $category) {
echo '<span>' . $category->get_name() . '</span>';
}
// Custom attributes
echo '<h3>Details:</h3>';
echo '<ul>';
echo '<li>Bedrooms: ' . $listing->get_bedrooms() . '</li>';
echo '<li>Bathrooms: ' . $listing->get_bathrooms() . '</li>';
echo '<li>Max Guests: ' . $listing->get_max_guests() . '</li>';
echo '</ul>';
// Amenities (multi-select)
$amenities = $listing->get_amenities__name();
if ($amenities) {
echo '<h3>Amenities:</h3>';
echo '<ul>';
foreach ($amenities as $amenity) {
echo '<li>' . $amenity . '</li>';
}
echo '</ul>';
}
// Vendor info
$vendor = $listing->get_vendor();
if ($vendor) {
echo '<h3>Hosted by:</h3>';
echo '<p>' . $vendor->get_name() . '</p>';
}
}
?>
📍 Where to Add This Code:
- Child theme templates (override HivePress template parts)
- functions.php (with hooks/filters)
- Custom plugin
- Bricks Builder (using PHP element or custom shortcode)
🔧 Pro Tips:
- Replace
get_amenities()with your actual attribute name (lowercase, underscores) - Use
get_attribute_name__name()for multi-select values - Use
get_attribute_name()for single values - Always check if
$listingexists before calling methods
⚠️ Common Attribute Names to Use:
These depend on what you created in Listings > Attributes:
$listing->get_bedrooms()$listing->get_bathrooms()$listing->get_amenities__name()(array)$listing->get_property_type()$listing->get_square_feet()$listing->get_year_built()
Check your exact attribute slugs in HivePress > Listings > Attributes
🎯 Example Use Cases:
- Custom search filters in Bricks: Display listings with specific attributes
- Featured properties widget: Show top-rated or newest listings
- Custom listing cards: Design your own property grid layout
- Comparison tool: Compare multiple properties side-by-side
- Custom email templates: Include listing details in notifications