WP Manifestindependent plugin directory
manifest / events / wp-appointments

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

0stars
0forks

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.zip

Readme

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

  1. Upload the plugin folder to /wp-content/plugins/
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Go to Services (under the new Appointments menu) to create services
  4. Configure each service: allowed roles, days, max per day, and future window
  5. Create blocked dates under Blocked Dates if needed
  6. Place the shortcode on any page or post: [wp-appointment services="consultation,therapy"]
  7. 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 DatesAdd 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_date with 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.

Read the full README on GitHub →