Title: Aprus Appointment Calendar
Author: aprus
Published: <strong>July 21, 2026</strong>
Last modified: July 21, 2026

---

Search plugins

![](https://ps.w.org/aprus-appointment-calendar/assets/banner-772x250.png?rev=3617215)

![](https://ps.w.org/aprus-appointment-calendar/assets/icon-256x256.png?rev=3617215)

# Aprus Appointment Calendar

 By [aprus](https://profiles.wordpress.org/aprus/)

[Download](https://downloads.wordpress.org/plugin/aprus-appointment-calendar.2.5.0.zip)

 * [Details](https://wordpress.org/plugins/aprus-appointment-calendar/#description)
 * [Reviews](https://wordpress.org/plugins/aprus-appointment-calendar/#reviews)
 *  [Installation](https://wordpress.org/plugins/aprus-appointment-calendar/#installation)
 * [Development](https://wordpress.org/plugins/aprus-appointment-calendar/#developers)

 [Support](https://wordpress.org/support/plugin/aprus-appointment-calendar/)

## Description

**Aprus Appointment Calendar** is a lightweight, no-frills booking plugin. You set
your opening hours, drag-select the exact slots you want to be bookable, and clients
book through a clean calendar embedded anywhere on your site.

#### Features

 * **Two client views** — monthly calendar and weekly column layout
 * **Embed anywhere** — `[apruapca_calendar]` shortcode, classic widget or Gutenberg
   block (`Aprus Appointment Calendar` / `Aprus Appointment Calendar (columns)`)
 * **Admin availability grid** — drag-select a rectangle over slots to open or close
   them in bulk. Booked slots are protected from accidental change.
 * **Appointment duration + break** — control slot generation with duration and 
   buffer between visits
 * **Working days & hours** — per-day-of-week toggle, lead time (earliest booking),
   calendar range (how far ahead)
 * **Booking popover** — hover a booked slot in admin to see client details and 
   cancel with one click; cancellation sends an e-mail notification
 * **Automatic locale** — Polish or English based on WordPress site language, English
   by default
 * **Respects your WP settings** — `start_of_week` (Monday vs Sunday), `time_format`(
   24h / 12h AM-PM)
 * **E-mail notifications** — customer + admin messages via `wp_mail()`
 * **No accounts required** — clients book by e-mail

#### Free and open source

The plugin is fully free — no premium tier, no artificially blocked features. If
you find it useful, you can [buy me a coffee on Ko-fi](https://ko-fi.com/aprus) 
or on [buycoffee.to](https://buycoffee.to/aprus). It helps me keep the project maintained.

#### Privacy

The plugin stores appointment data (name, e-mail, phone, note, date, time) in your
own WordPress database. Nothing is sent to third-party servers. E-mails go through
the standard `wp_mail()` function.

## Screenshots

[⌊Monthly calendar view for clients — pick a day, then a time slot⌉⌊Monthly calendar
view for clients — pick a day, then a time slot⌉[

Monthly calendar view for clients — pick a day, then a time slot

[⌊Weekly column view — days as columns, slots as rows⌉⌊Weekly column view — days
as columns, slots as rows⌉[

Weekly column view — days as columns, slots as rows

[⌊Admin availability grid — drag-select to open/close many slots at once⌉⌊Admin 
availability grid — drag-select to open/close many slots at once⌉[

Admin availability grid — drag-select to open/close many slots at once

[⌊Hover a booked slot to see client details and cancel with one click⌉⌊Hover a booked
slot to see client details and cancel with one click⌉[

Hover a booked slot to see client details and cancel with one click

[⌊Plugin settings⌉⌊Plugin settings⌉[

Plugin settings

## Blocks

This plugin provides 2 blocks.

 *   Appointment calendar (monthly)
 *   Appointment calendar (columns)

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/` or install from **Plugins  Add
    New  Upload**
 2. Activate **Aprus Appointment Calendar** in the Plugins list
 3. Open **Appointments  Settings**, adjust hours / duration / working days
 4. Open **Appointments  Calendar** and drag over slots to open them for clients
 5. Add the shortcode `[apruapca_calendar]` (or `[apruapca_calendar view="columns"]`)
    to any page/post, or drop the block/widget on your site

## FAQ

### How do I display the weekly column view?

Use `[apruapca_calendar view="columns"]` in the shortcode, or pick **Aprus Appointment
Calendar (columns)** in the block editor / widgets.

### Can clients see all slots by default?

No. In this plugin nothing is bookable until you explicitly open slots in **Appointments
Calendar**. Drag over the slots you want to make available.

### Can I cancel a booking?

Yes. In **Appointments  Calendar**, hover a blue (booked) slot — a popover appears
with client details and a “Cancel booking” button. The client gets an e-mail notification.
You can also cancel from **Appointments  Bookings**.

### Does it support 12-hour time format?

Yes. The calendar reads your **Settings  General  Time format** — `H:i` shows 24-
hour times (`13:00`), `g:i a` shows 12-hour (`1:00 pm`).

### Does the week start on Monday or Sunday?

Whatever you set in **Settings  General  Week starts on**.

### Does the plugin phone home / call external services?

No. All data stays in your WordPress database. E-mails use `wp_mail()`.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Aprus Appointment Calendar” is open source software. The following people have 
contributed to this plugin.

Contributors

 *   [ aprus ](https://profiles.wordpress.org/aprus/)

[Translate “Aprus Appointment Calendar” into your language.](https://translate.wordpress.org/projects/wp-plugins/aprus-appointment-calendar)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/aprus-appointment-calendar/),
check out the [SVN repository](https://plugins.svn.wordpress.org/aprus-appointment-calendar/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/aprus-appointment-calendar/)
by [RSS](https://plugins.trac.wordpress.org/log/aprus-appointment-calendar/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.5.0

 * Month view now colours each day by availability — days with open slots get a 
   green tint and dot, fully-booked days are greyed out and not clickable, with 
   a small legend below the calendar
 * Redesigned the empty “no free slots” state (centred icon + message) instead of
   a cramped line of text
 * Spam / bot protection for the public booking form, all configurable under Settings
   Spam protection (on by default, no external services): honeypot field, time trap(
   rejects submits faster than a human — default 3s) and a per-IP rate limit (default
   5 bookings / 60 min)
 * Unique prefixes across the whole plugin, per WordPress.org review feedback: functions,
   classes, constants, options, hooks, nonces, AJAX actions, menu slugs, script/
   style handles, widget id, block namespaces and the custom table renamed from 
   the 3-letter `sac` prefix to `apruapca` (8 chars)
 * Renamed the shortcode from the generic `[appointment_calendar]` to `[apruapca_calendar]`
   for the same uniqueness requirement
 * Wrap global variables in `uninstall.php` in a prefixed function
 * Refreshed the front-end booking form — a summary chip with calendar icon for 
   the chosen slot, uppercase field labels with clearer spacing, larger inputs, 
   and a redesigned confirmation / error message (status icon, subtle fade-in, no
   empty space reserved before a booking is made)
 * Verified on a clean WP_DEBUG install — no notices, warnings or deprecations across
   activation, front-end views, all AJAX endpoints, the full booking lifecycle, 
   settings save and uninstall

#### 2.4.4

 * Pass all Plugin Check audits: WordPress coding standards, i18n compliance, DB
   safety, output escaping
 * Migrate SQL queries to modern `%i` identifier placeholder (requires WordPress
   6.2+)
 * All translatable strings go through `__()` with English source (Poedit / GlotPress
   friendly)
 * Add `translators:` comments on placeholders in e-mail templates
 * Replace `date()` with `gmdate()` for timezone-safe date math
 * Ordered sprintf placeholders (`%1$s, %2$s`) in all multi-arg strings

#### 2.4.3

 * Switch to WordPress standard i18n with .pot / .po / .mo files (in `/languages/`)
 * All source strings are English; Polish translation shipped as `aprus-appointment-
   calendar-pl_PL.mo`
 * Localized month and weekday labels use WordPress core translations via `wp_date()`
 * Full code comments translated to English

#### 2.4.2

 * Fix layout shift after selecting a day in the monthly view (theme CSS interference)
 * `overflow: hidden` on the calendar card so nothing escapes
 * `min-width: 0` on grid children — prevents column widening under long content

#### 2.4.0

 * Respect WordPress `start_of_week` — Monday or Sunday
 * Respect WordPress `time_format` — 24h / 12h AM-PM in slot labels and popover
 * Minor CSS reset to prevent themes from breaking labels and headings

#### 2.3.0

 * Full visual redesign — modern colour palette, spacing, typography

#### 2.2.0

 * Admin availability: rubber-band rectangle selection (mouse drag or touch)
 * Auto-jump on first load to the first week with clickable slots
 * Stronger `user-select: none` to stop theme CSS from breaking drag

#### 2.1.0

 * Booking popover on hover (client details + cancel)
 * Cancel booking endpoint with customer e-mail notification
 * Full i18n — auto-detected Polish / English

#### 2.0.0

 * New availability model — nothing is bookable by default; admin opens slots explicitly
 * Add appointment duration + buffer settings

#### 1.0.0

 * First release

## Meta

 *  Version **2.5.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [appointments](https://wordpress.org/plugins/tags/appointments/)[booking](https://wordpress.org/plugins/tags/booking/)
   [calendar](https://wordpress.org/plugins/tags/calendar/)[reservations](https://wordpress.org/plugins/tags/reservations/)
   [schedule](https://wordpress.org/plugins/tags/schedule/)
 *  [Advanced View](https://wordpress.org/plugins/aprus-appointment-calendar/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/aprus-appointment-calendar/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/aprus-appointment-calendar/reviews/)

## Contributors

 *   [ aprus ](https://profiles.wordpress.org/aprus/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/aprus-appointment-calendar/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://ko-fi.com/aprus)