Power Reservations
A powerful and flexible WordPress reservation system plugin with Elementor integration, perfect for restaurants, venues, and any business requiring appointment scheduling.
by Scott Powers · github.com/spowers2/power-reservations · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/spowers2/power-reservations/archive/refs/heads/main.zipA powerful and flexible WordPress reservation system plugin with Elementor integration, perfect for restaurants, venues, and any business requiring appointment scheduling.
📋 Table of Contents
- Features
- Requirements
- Installation
- Quick Start
- Configuration
- Usage
- Elementor Integration
- Email Notifications
- Shortcodes
- FAQ
- Support
- Contributing
- License
✨ Features
Core Features
- Easy Reservation Management - Comprehensive admin interface for managing all reservations
- Elementor Widget - Drag-and-drop reservation form widget with live preview
- Customizable Forms - Configure which fields to display and make them required/optional
- Email Notifications - Automated emails for confirmations, reminders, and status updates
- Approval Workflow - Optional reservation approval system
- Time Slot Management - Configure available time slots and booking windows
- Party Size Control - Set minimum and maximum party sizes
- Blackout Dates - Block specific dates when reservations aren't available
- Customer Management - Track customer information and reservation history
- Dashboard Widget - Quick overview of today's reservations in WordPress dashboard
Advanced Features
- Custom Styling - Multiple form themes with custom color options
- Real-time Availability - Check time slot availability before booking
- Reservation Editing - Allow customers to edit reservations within a specified window
- Cancellation System - Built-in reservation cancellation with email notifications
- Export Functionality - Export reservations to CSV for reporting
- Responsive Design - Mobile-friendly forms and admin interface
- Security Features - Nonce verification, SQL injection prevention, XSS protection
- Developer Friendly - Hooks and filters for customization
📋 Requirements
- WordPress: 5.0 or higher
- PHP: 7.4 or higher
- MySQL: 5.6 or higher
- Elementor: 3.0 or higher (optional, for widget integration)
🚀 Installation
Method 1: Upload via WordPress Admin
- Download the plugin ZIP file
- Log in to your WordPress admin panel
- Navigate to Plugins > Add New
- Click Upload Plugin button
- Choose the downloaded ZIP file
- Click Install Now
- Activate the plugin
Method 2: FTP Upload
- Download and extract the plugin ZIP file
- Upload the
powerReservationsfolder to/wp-content/plugins/ - Log in to WordPress admin
- Navigate to Plugins
- Find "Power Reservations" and click Activate
Method 3: Manual Installation
- Clone this repository or download the files
- Place the
powerReservationsfolder in your WordPress plugins directory - Ensure the main plugin file is named
power-reservations.php - Activate through WordPress admin
🎯 Quick Start
1. Initial Setup
After activation, the plugin will:
- Create necessary database tables
- Set up default settings
- Generate default email templates
Navigate to Reservations > Settings to configure:
- Business name and email
- Time slots and booking windows
- Form fields and requirements
- Email templates
2. Add Reservation Form to Your Site
Using Elementor (Recommended):
- Edit any page with Elementor
- Search for "Power Reservations" widget
- Drag widget to your page
- Customize settings in the left panel
- Publish your page
Using Shortcode: Add this shortcode to any page, post, or widget:
[power_reservations]
3. Managing Reservations
Access your reservations dashboard:
- Navigate to Reservations in WordPress admin
- View all reservations in a sortable table
- Approve, decline, edit, or delete reservations
- Export to CSV for reporting
⚙️ Configuration
Business Settings
Location: Reservations > Settings > General
- Business Name: Displayed in emails and forms
- Business Email: Receives notification emails
- Contact Phone: Displayed on forms (optional)
- Address: Displayed on forms (optional)
Time Slot Configuration
Location: Reservations > Settings > Time Slots
Configure when customers can make reservations:
Example Time Slot Configuration:
- Start Time: 17:00 (5:00 PM)
- End Time: 22:00 (10:00 PM)
- Slot Duration: 30 minutes
- Max Reservations per Slot: 10
Operating Hours:
- Set different hours for each day of the week
- Close specific days by unchecking them
- Set seasonal hours or special event times
Form Field Configuration
Location: Reservations > Settings > Form Builder
Customize which fields appear on your reservation form:
- Name - Customer's full name
- Email - Customer's email address
- Phone - Contact phone number
- Date - Reservation date picker
- Time - Available time slot selector
- Party Size - Number of guests
- Special Requests - Optional notes/requests
Each field can be:
- Enabled/Disabled
- Required/Optional
- Reordered via drag-and-drop
- Customized with labels and placeholders
Email Templates
Location: Reservations > Settings > Email Templates
Customize automated emails sent to customers:
Available Templates:
- Confirmation Email - Sent when reservation is created
- Approval Email - Sent when admin approves a reservation
- Declined Email - Sent when reservation is declined
- Reminder Email - Sent before reservation time
- Cancellation Email - Sent when reservation is cancelled
Available Variables:
{customer_name}- Customer's name{reservation_date}- Reservation date{reservation_time}- Reservation time{party_size}- Number of guests{business_name}- Your business name{confirmation_link}- Link to view reservation{cancellation_link}- Link to cancel reservation{edit_link}- Link to edit reservation
Styling Options
Location: Reservations > Settings > Styling
Choose from preset themes or create custom styling:
Preset Themes:
- Default - Clean, modern design
- Minimal - Simple, lightweight style
- Bold - High contrast, attention-grabbing
- Custom - Full color customization
Custom Colors:
- Primary Color
- Button Color
- Text Color
- Background Color
- Border Color
📖 Usage
Making a Reservation (Customer View)
- Navigate to the reservation form on your website
- Fill in required information:
- Name and contact details
- Preferred date and time
- Party size
- Any special requests
- Click "Make Reservation"
- Receive confirmation email
- Optionally edit or cancel using links in email
Managing Reservations (Admin View)
View All Reservations:
- Navigate to Reservations in admin menu
- Filter by status, date, or customer
- Sort by any column
- Bulk actions for multiple reservations
Approve/Decline Reservations:
- Click on reservation in list
- Click Approve or Decline button
- Customer receives notification email
- Status updates in dashboard
Edit Reservations:
- Click Edit next to reservation
- Modify any field as needed
- Save changes
- Customer receives update notification
Delete Reservations:
- Click Delete next to reservation
- Confirm deletion
- Reservation is permanently removed
Export Reservations:
- Filter reservations as needed
- Click Export to CSV button
- Download file with all reservation data
Dashboard Widget
Quick access to today's reservations:
- Shows count of total, pending, and approved reservations
- Links to full reservation management
- Updates in real-time
🧩 Elementor Integration
Adding the Widget
- Edit page with Elementor
- Search for "Power Reservations" or "Reservation"
- Drag widget to desired location
- Widget appears with live preview
Widget Settings
Content Tab:
- Form Title - Custom heading for form
- Submit Button Text - Customize button label
- Show Description - Add explanatory text
Style Tab:
- Form Style - Choose from available themes
- Colors - Customize all color elements
- Typography - Set fonts and sizes
- Spacing - Adjust padding and margins
- Borders - Customize border styles
Advanced Tab:
- CSS Classes - Add custom classes
- Custom CSS - Add specific styling
- Visibility - Control display conditions
Widget Customization Example
// Add custom validation
add_filter('pr_validate_reservation', function($is_valid, $data) {
// Add custom validation logic
if ($data['party_size'] > 20) {
return new WP_Error('large_party', 'Please call for parties over 20');
}
return $is_valid;
}, 10, 2);
// Modify form fields
add_filter('pr_form_fields', function($fields) {
// Add custom field
$fields['dietary'] = array(
'label' => 'Dietary Restrictions',
'type' => 'textarea',
'required' => false
);
return $fields;
});
📧 Email Notifications
Setting Up Email Notifications
SMTP Configuration (Recommended):
For reliable email delivery, use an SMTP plugin:
- Install "WP Mail SMTP" or similar plugin
- Configure with your email service
- Test email delivery
- Power Reservations will use these settings automatically
Email Timing:
- Confirmation: Sent immediately upon reservation
- Approval: Sent when admin approves reservation
- Reminder: Sent 24 hours before reservation (configurable)
- Cancellation: Sent immediately when cancelled
Email Customization
HTML Email Templates:
All emails support HTML and can be fully customized:
<h2>Reservation Confirmed</h2>
<p>Hi {customer_name},</p>
<p>Your reservation for {party_size} guests on {reservation_date} at {reservation_time} has been confirmed!</p>
<p><a href="{confirmation_link}">View Reservation</a></p>
<p>Need to make changes? <a href="{edit_link}">Edit</a> or <a href="{cancellation_link}">Cancel</a></p>
📝 Shortcodes
Primary Shortcode
Display the reservation form:
[power_reservations]
With Attributes:
[power_reservations title="Book Your Table" style="minimal"]
Available Attributes:
title- Custom form titlestyle- Form theme (default, minimal, bold, custom)show_title- Show/hide title (true/false)button_text- Custom submit button text
Additional Shortcodes
Display Reservation Count:
[pr_reservation_count]
Customer's Reservations:
[pr_my_reservations]
❓ FAQ
General Questions
Q: Is this plugin free? A: Yes, Power Reservations is completely free and open source under GPL-2.0 license.
Q: Do I need Elementor? A: No, Elementor is optional. You can use the shortcode on any page.
Q: Can I accept payments? A: Currently, the plugin focuses on reservations. Payment integration is planned for a future release.
Q: How many reservations can I manage? A: There's no limit. The plugin is designed to handle high volumes efficiently.
Q: Is it mobile responsive? A: Yes, all forms and admin interfaces are fully responsive.
Setup Questions
Q: Emails aren't sending. What should I do? A:
- Check your WordPress email settings
- Install an SMTP plugin like WP Mail SMTP
- Test email delivery from Settings > Email Templates
- Check spam folders
- Verify your email server configuration
Q: How do I change the available time slots? A:
- Go to Reservations > Settings > Time Slots
- Modify start time, end time, and duration
- Set max reservations per slot
- Save changes
Q: Can customers see their reservation history?
A: Yes, use the [pr_my_reservations] shortcode to display a customer's reservation history.
Customization Questions
Q: Can I translate the plugin? A: Yes, the plugin is translation-ready. Use a plugin like Loco Translate or provide .po/.mo files.
Q: How do I customize the form appearance? A:
- Use built-in styling options in Settings > Styling
- Use custom CSS in your theme
- Override plugin templates in your theme
- Use Elementor's styling controls (if using widget)
Q: Can I add custom fields?
A: Yes, use the pr_form_fields filter to add custom fields programmatically.
Technical Questions
Q: Where is data stored?
A: All reservation data is stored in your WordPress database in custom tables with the prefix pr_.
Q: Is the plugin secure? A: Yes, the plugin includes:
- Nonce verification for all forms
- SQL injection prevention via prepared statements
- XSS protection via output escaping
- Input sanitization and validation
- WordPress security best practices
Q: Does it support multisite? A: Yes, each site in a multisite network maintains its own reservations.
Q: Can I export reservation data? A: Yes, use the Export to CSV feature in the reservations list.
🆘 Support
Getting Help
Documentation:
- Full documentation available in
/docsfolder - Video tutorials: [Link to tutorials]
- Knowledge base: [Link to KB]
Community Support:
- WordPress.org forums
- GitHub Issues
- Stack Overflow tag:
power-reservations
Premium Support:
- Priority email support
- Custom development
- Installation assistance
- Contact: support@example.com
Reporting Bugs
Found a bug? Please report it:
- Check existing GitHub Issues
- Create new issue with:
- WordPress version
- PHP version
- Plugin version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
Feature Requests
Have an idea? We'd love to hear it:
- Open a GitHub Issue
- Label it as "enhancement"
- Describe the feature and use case
- Community can vote and discuss
🤝 Contributing
We welcome contributions! Here's how you can help:
Code Contributions
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Coding Standards
- Follow WordPress Coding Standards
- Use proper documentation blocks
- Write meaningful commit messages
- Include unit tests for new features
- Update documentation as needed
Translation
Help translate Power Reservations:
- Visit our translation project
- Select your language
- Translate strings
- Submit for review
Documentation
Improve our docs:
- Fork the repository
- Edit documentation files
- Submit a pull request
- Clear explanations appreciated
📄 License
Power Reservations is licensed under the GPL-2.0 License.
Copyright (C) 2025 Power Reservations
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
🙏 Acknowledgments
- WordPress community for inspiration and support
- Elementor for providing excellent widget APIs
- All contributors who help improve this plugin
- Users who provide valuable feedback
📞 Contact
- Website: https://yourwebsite.com
- Email: support@yourwebsite.com
- GitHub: https://github.com/yourusername/power-reservations
- Twitter: @yourhandle
Made with ❤️ for the WordPress community