WP Appointment Plugin
Modern appointment booking for WordPress. Configure services with roles, days, max bookings. Block dates (including annual repeats). Shortcode [wp-appointment] for frontend. Users manage their own appointments.
by Your Name · github.com/cerebrocodes/wp-appointments · 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/cerebrocodes/wp-appointments/archive/refs/heads/main.zipReadme
WP Appointment Plugin
Modern, flexible appointment booking for WordPress. Let users book services, while admins control everything from the dashboard – no coding required.
Features
- Multi‑service support – create unlimited services (taxonomy-based)
- Per‑service settings – set allowed user roles, available days of week, max appointments per day, and future booking window (days ahead)
- Blocked dates – define dates or ranges that are unavailable (e.g., holidays, vacations) – with optional annual repetition (e.g., Christmas, New Year)
- User‑friendly frontend – clean datepicker that only shows truly available dates (respects days, daily limits, blocked dates)
- One‑appointment‑at‑a‑time – users can only have one future appointment at a time, unless they cancel the existing one
- My Appointments – users can view and cancel their upcoming bookings via
[wap_my_appointments]shortcode - Shortcode driven – embed booking forms anywhere with
[wp-appointment services="service1,service2"] - Admin friendly – full WordPress UI; appointments are custom post types with editable metaboxes
- Developer friendly – extensible, with hooks and clean code
Installation
- Upload the plugin folder to
/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Go to Services (under the new Appointments menu) to create services
- Configure each service: allowed roles, days, max per day, and future window
- Create blocked dates under Blocked Dates if needed
- Place the shortcode on any page or post:
[wp-appointment services="consultation,therapy"] - Add a page with
[wap_my_appointments]so users can manage their bookings
Usage Examples
Basic Shortcode
[wp-appointment services="consultation, coaching"] text
User Appointments Dashboard
Place this on a page:
[wap_my_appointments] text
Logged‑in users will see a table of their upcoming appointments with a cancel link.
Blocked Dates
- Go to Blocked Dates → Add New
- Enter a title (e.g., "Christmas Holidays")
- Set a start and end date, or just a start date for a single day
- Check "Repeat annually" to block that month/day range every year
Configuration
Each service (created in Services) has these settings:
- Allowed User Roles – select which roles (e.g., subscriber, editor) can book this service
- Days Offered – tick which weekdays the service is available
- Max Appointments Per Day – limit the number of bookings for that service on a given date
- Available Days in Future – how many days from today the service can be booked (e.g., 30 = today + 30 days)
All these are respected both in validation and in the frontend datepicker.
Technical Details
- Appointments are stored as a custom post type
appointment - Each appointment stores:
_appointment_date– YYYY-MM-DD (meta field)_appointment_service_id– term ID (meta field)- Service also assigned as taxonomy term
service
- Blocked dates are custom post type
blocked_datewith meta:_blocked_start_date,_blocked_end_date,_blocked_is_annual - Full nonce & capability checks for security
Requirements
- WordPress 5.0 or higher
- PHP 7.4 or higher
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
License
GPL v2 or later – see LICENSE file for details.