Aprus Appointment Calendar

外掛說明

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 settingsstart_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 or on buycoffee.to. 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.

螢幕擷圖

適用於區塊編輯器

這個外掛提供 2 個可供區塊編輯器使用的區塊。

  • Appointment calendar (monthly)
  • Appointment calendar (columns)

安裝方式

  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

常見問題集

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 formatH: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().

使用者評論

這個外掛目前沒有任何使用者評論。

參與者及開發者

以下人員參與了開源軟體〈Aprus Appointment Calendar〉的開發相關工作。

參與者

將〈Aprus Appointment Calendar〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

變更記錄

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