BookingWP WooCommerce Appointments

BookingWP WooCommerce Appointments v5.4.7 Nulled

No permission to download
BookingWP WooCommerce Appointments v5.4.7 Nulled
= [5.4.7] - August 3, 2026
Latest

Focused on Admin panel, Admin calendar, and Availability / slots (+2 more). 9 improvements and 15 fixes.

Improvements​

  • Admin panel: create/edit fields use outlined floating labels (Checkout-style); status uses compact filter chips; attendance is hidden on create, editable on edit, and muted text on view; Pick from a calendar stays a compact trigger until opened.
  • Admin calendar: sticky toolbar and day headers under admin chrome with one page scrollbar; the toolbar docks under the admin bar while you scroll.
  • Admin: calendar/panel product list loads with a light id/title/color query instead of hydrating up to 200 full product objects on every admin load.
  • Admin panel browse: day availability evaluates each rule once; all-day RRULEs reuse the in-request path instead of rebuilding minutes every civil day.
  • Admin panel: primary form controls use 14px body text; series list shows date and time ranges on separate lines.
  • Admin panel create: browse no longer auto-opens when a slot is unavailable; Add New without calendar prefill leaves date/time empty (date-only calendar picks still auto-select the first time).
  • Admin panel: product select uses preloaded products (instant); clear (x) removed on create/edit; duplicate titles append SKU or #id; duration sits on the When row; line Total shows only when it differs from order total.
  • Admin calendar: compact one-row toolbar; Add New is a leading filled button (label on wide screens, icon-only on narrow); filter button shows an active-count badge only (selections stay in the filter panel).
  • Admin calendar: hovered and selected events use a white ring plus lift; selected events rise above overlaps.

Fixes​

  • Admin calendar (staff): appointments you create for products without assigned staff stay on the calendar immediately (creator matches the locked staff filter, same as after reload).
  • Admin panel create: real midnight slots (00:00), including admin-TZ midnight, keep a timed calendar preview and availability checkmark (slot timestamp distinguishes them from date-only placeholders).
  • Admin panel: narrow view fills the viewport; series uses panel scroll; customer timezone and cost lines stack; series rows are date | status | open.
  • Admin calendar: switching the appointment panel from view to edit no longer flickers the calendar event (preview ghost only appears after the draft schedule changes).
  • Admin calendar: full-day unavailable stripes stay on the civil day (not shifted by admin timezone); stripe tips on hover/tap instead of a modal; tapping a stripe no longer opens create; empty cells open create again.
  • Admin calendar: sticky WooCommerce header chrome scoped to the calendar page only; staff Screen Options/Help no longer inflate Firefox scroll; empty preload ranges still seed so first paint skips REST; availability rules load again when indexed cache is enabled.
  • Admin calendar SSE: after a recurring series materializes, the view panel gets the full occurrence list and package pricing; one series create snackbar with customer and pattern.
  • Admin calendar SSE: new appointments stay after month navigation (cache insert); payloads build only when queued and flush once per request; burst creates/bookings collapse to one snackbar count.
  • Admin calendar/panel (staff): product preload respects Create Appointments for Any Product; create auto-selects the logged-in staff when assigned; toolbar Add New uses the same path as slot-pick (no full reload).
  • Admin panel create: required date/time errors show under those fields and clear when valid; hourly auto-select no longer rolls the form date forward when staff timezone differs from the site.
  • Admin panel: Staff field shows or hides from product preload (same as add-ons); create availability responds faster; day-duration checks use the correct civil day when staff timezone differs; timed availability keeps slot timestamps when site and admin browse days differ.
  • Admin panel browse: skeleton cells under a kept header; day click and view toggles reuse in-memory data; SSE invalidates browse caches while open; product switch reloads the open mini-cal.
  • Availability / slots: overnight RRULE blocks (e.g. weekly Fri 22:00-02:00) again split across civil days (evening on the start day, morning on the next).
  • Storefront recurring: create the series when the order reaches on-hold (cheque/BACS), not only processing/completed, so offline payment checkouts still materialize appointments.
  • ICS export: offset-based store timezones (e.g. +01:00 from gmt_offset) no longer fatal VTIMEZONE generation when DateTimeZone::getTransitions() returns false.
BookingWP WooCommerce Appointments v5.4.6 Nulled
2026.07.30 - version 5.4.6
* Dev - Tests: global-only availability with indexing enabled (plain and staff products), index readiness ignoring malformed scoped cache rows, and product config probe when global rules start after the initial 14-day window.
* Fix - Admin panel: product configuration probe scans the booking horizon in capped chunks (14/30/60 days) instead of only the next two weeks, so global rules or RRULEs with a later start do not trigger false "no bookable times" notices.
* Fix - Indexed availability: index readiness and multi-staff slot generation align with fetch guards (malformed scope rows no longer mark the index ready; empty indexed batch falls back to dynamic/global rules); fixes global-only rules not applying and false product config notices after 5.4.5.
BookingWP WooCommerce Appointments v5.4.4 Nulled
= [5.4.4] - July 27, 2026
1 improvement · 2 fixes — Product Add-ons integration, Admin calendar

Improvement​

  • PHPStan raised to level 5 — type narrowing, expanded plugin and WordPress stubs, and dead-code cleanup across admin, data stores, API, GCal, and integrations (clean baseline).

Fixes​

  • Product Add-ons integration: decode jQuery .serialize() form payloads with wp_unslash() before parse_str() in legacy cost filter.
  • Admin calendar: guest customer labels on HPOS stores read billing from wc_order_addresses (not legacy _billing_* order meta), restoring "Name (Guest)" on calendar preload and SSE updates.
BookingWP WooCommerce Appointments v5.4.3 Nulled
= [5.4.3] - July 26, 2026
9 improvements · 10 fixes — Admin calendar, ICS export, Admin calendar preload, PHPCS, +10 more

Improvements​

  • Admin calendar preload: eligible-ID query plus batched postmeta hydration; batched order meta (no per-order WC_Order hydration). Recurring series package summary on bulk fetch (get_panel_preload, one load per series id); full appointment panel still loads on open.
  • PHPCS: WPCS security ruleset (phpcs.security.ruleset.xml, npm run lint:php:security), shared path rulesets and request helpers; lint:php / build gate runs security scan + PHPStan; optional lint:php:standards / lint:php:quality; PHP-CS-Fixer via format:php.
  • PHPStan raised to level 4 — dead-code cleanup across admin, slots, API, GCal, and core (clean baseline).
  • Rate limiting: filterable enabled, guest_only, and strict_max_requests; named guest-read defaults on WC_Appointments_Rate_Limiter.
  • Tests: PublicAjaxSecurityLiveTest, PhpstanLevel4RegressionLiveTest, IcsExporterStaleEntryRegressionLiveTest, MyAccountRescheduleContractLiveTest, CalendarPreloadParityLiveTest (calendar preload vs independent eligibility SQL; non-UTC and all-day; attribute term labels), RequestBoundaryRegressionLiveTest, SanitizerBeforeParseGuardTest, and SseTopicContractVerificationTest (request transport boundaries, PHP/JS SSE topic contract, FC week/day header zone).
  • WC_Product_Appointment_Rule_Manager::get_minutes_from_rules() remains as a compatibility shim; use WC_Appointment_Slots_Rule_Resolver::build_minute_mask() instead.
  • Admin panel: remove Cancel from create/edit footer (close via X / backdrop).
  • Admin calendar: Google-style grid (horizontal week lines only in month, stacked week/day headers, centered month dates); neutral toolbar chrome (admin body text/borders), segmented view switcher, primary + Add New beside Filters (icon-only; label on hover/aria).
  • ICS export: log a warning when unloadable entries are skipped (WooCommerce → Status → Logs).

Fixes​

  • Admin calendar: toolbar spans full wrap width below Screen Options/Help; staff without WooCommerce header get Add New in the toolbar; staff/creator filter uses EXISTS (not INNER JOINs); Fake UTC civil preload range and YmdHis row parsing (not strtotime); shared excluded-status list (cancelled visible; holds/trash/drafts hidden) on SQL query, legacy API, and frontend; orphan/deleted post_parent order IDs pre-filtered before batch order load; availability rule background stripes reload when switching months.
  • REST API: appointments get_item_schema() extends the parent schema instead of starting from null.
  • Security: sanitize/unslash POST/GET at origin across storefront AJAX, data stores, cart, SSE, cron, widget, admin (AJAX, settings, calendar, list table, exporters, meta boxes, product edit), WPML, Google Calendar, and integrations; prepared SQL for lookups and migrations; escape output in admin views; guest-only rate limit preserved for cached pages with optional nonces.
  • Storefront/admin AJAX: parse jQuery .serialize() form payloads before per-field sanitization (not sanitize_text_field() on the encoded string — destroys %XX sequences for timezones, times, and add-on text).
  • SSE: preserve dotted event names (appointment.created) in the stream; sanitize_key() stripped dots and broke admin calendar live updates.
  • Availability rules JSON: decode unslashed payloads first (callers pass wp_unslash( $_POST )); double-unslash broke rule titles containing quotes.
  • Admin calendar: week/day column headers use browser-local date (not UTC parts); legacy week/day data-time and calendar_day= links use site timezone (not gmdate); batched order line item meta resolves global attribute term names (not raw slugs) in the appointment panel.
  • Add Appointment and My Account series actions: read REQUEST_METHOD from $_SERVER (not filter_input( INPUT_SERVER ), unreliable under some SAPIs).
  • Legacy install migration: delete product availability post meta by key after table migration (not a single rule value).
  • ICS export: skip unloadable appointment entries so stale IDs do not fatal calendar generation.
BookingWP WooCommerce Appointments v5.4.2 Nulled
2026.07.18 - version 5.4.2
* Dev - PHPStan raised to level 3 (phpVersion 7.4).
* Dev - Tests: regression coverage for range_type RRULE routing parity and orphan `rrule` field cleanup.
* Dev - Tests: lock GCal failure-path contracts (`make_gcal_request()` → `WP_Error`, `sync_event_resource()` → `false`) and rule-minutes payload shape across all `compute_rule_minutes()` branches.
* Fix - Indexed availability: RRULE expansion follows `range_type` (same as dynamic); orphan `rrule` on non-`rrule` rules uses the non-RRULE path and purges legacy expand rows on background passes.
* Fix - Google Calendar: inbound sync clears `rrule` when an event is stored as non-recurring (`custom` / `custom:daterange`).
BookingWP WooCommerce Appointments v5.4.1 Nulled
[5.4.1] - July 16, 2026
5 improvements · 5 fixes — Orders, Indexed availability, PHPStan, Storefront calendar, +3 more

Improvements​

  • PHPStan: level 2 with a clean baseline — expanded plugin and integration stubs plus PHPDoc/type fixes across core.
  • Indexed availability: occupancy reads from appointment cache when healthy (live fallback during backfill; in-cart recurring holds merged); backfill batches gap-only missing appointments.
  • Storefront calendar: data-engine reports rules/occupancy source (1 indexed, 2 dynamic, 3 indexed + appointment cache).
  • Orders: get_appointment_ids_from_order_and_item_id() deprecated — use get_appointment_ids_from_order_item_id( $order_item_id, true, $order_id ).
  • Orders: get_appointment_ids_from_order_item_id() triggers wc_doing_it_wrong when $order_id is omitted (except opt-in order-line _appointment_id cache).

Fixes​

  • Indexed availability: weekday time:N rules count only matching days; re-enable no longer wipes inline indexing; backfill pending flag clears/re-queues stale jobs and stops on zero-gap batches.
  • Google Calendar: scheduled sync is forward-only unless admin full re-sync; inbound sync skips stale events (event ID / site_url mismatch).
  • Availability / slots: overlap day keys use Fake UTC civil midnight so 00:00 wall slots stay on the correct day on negative-offset stores.
  • Orders: order-scoped line-item lookup ($order_id on get_appointment_ids_from_order_item_id) — orphaned _appointment_order_item_id no longer shows another customer’s appointment; line delete clears the link before ID reuse.
  • Cart: session load removes holds tied to terminal orders or past start dates and releases in-cart appointments to was-in-cart.
BookingWP WooCommerce Appointments v5.3.12 Nulled
*** WooCommerce Appointments Changelog ***

2026.07.10 - version 5.4.0
* Improvement - Settings → Indexing: combined section intro with scannable structure (benefit, when to use, warning, maintenance).
* Improvement - Pricing: `calculate_appointment_cost()` can skip `is_appointable()` for display-only quotes — post `wc_appointments_field_quote_only` or filter `woocommerce_appointments_calculate_cost_validate_appointable`; add-to-cart still validates separately.
* Performance - Removed ~1 MB of unused Moment.js from storefront scripts.
* Dev - PHPStan: third-party and WP-CLI stubs, admin include `@var` docblocks, Sprint 5–6 cleanup — baseline cleared (0 suppressed errors).
* Fix - REST API: allowlist availability `filter` column keys before SQL (closes unauthenticated injection on public `/availabilities`).
* Fix - Storefront timezone **Default**: persist site-timezone choice via `appointments_use_site_timezone` (not a fixed IANA string); custom zones still use `appointments_time_zone`; first visit uses timezone AJAX.
* Fix - Availability / slots: past-date guard uses Fake UTC civil day (`gmdate`, not `wp_date`) for minute/hour tokens; day/month posts omit `_time` so same-day all-day add-to-cart is not rejected after midnight; legacy timed data stores the same Fake UTC instant as listed slots.
* Fix - Availability rules: initialize `$rule_val` each iteration; `offsetSet( 'id', … )` assigns the posted id (was parameterless `set_id()`).
* Fix - Pricing: multi-day day-unit totals sum each civil day in the span (checkout uses same per-day engine as slot preview; PAO duration flat prices skipped when already billed per day).
* Improvement - Recurring package footer: single cost summary list (no duplicate Total/Due today on prepaid); session count under the hero price; deposits excluded from package preview (matches admin). Series preview summary no longer returns deprecated `checkout_footer_html` (use `total_price_html` only).
* Fix - Per-day inventory: in-cart recurring `session_starts` occupancy included when marking civil days sold out (calendar/conflict checks match slots overlap index).
* Fix - Storefront: unavailable `?time=HHMM` shows selected time with "(Selected time is unavailable)" instead of auto-picking first slot.
* Fix - Admin add appointment: reject missing posted date before parsing year/month/day.
* Fix - Admin panel: create panel anchors beside the calendar slot when **Add New Appointment** is opened first and a date/time is picked afterward (clear centered mode on calendar trigger).
* Fix - Admin product staff panel: fix assign-staff AJAX scope (`$staff_base_cost`, `$staff_qty`) and staff view `self::` call (`WC_Appointments_Admin::get_appointment_staff()`).
* Fix - Google Calendar: sync errors log exception messages; HTTP backoff returns explicit error when retry loop exits without a response.
* Fix - Partial refunds: each reduced-qty appointment keeps the correct per-line-item `$remaining_qty`.
* Fix - Series My Account: invalid action redirect no longer leaves `$result` / `$notice` undefined.
* Fix - Helpers: remove undefined `$gmt_offset` / `$cart_item` reads in `wc_appointment_get_timezone_offset()` and `wc_appointment_pretty_addon_duration()`.
* Fix - Privacy: exporter registration returns exporters array from `register_exporters()`.
* Fix - CRM integration: initialize note strings before appending comment HTML.
* Fix - Webtomizer deposits: check `$appointment_ids` array before updating partial-payment status.
* Fix - Product Vendors integration: declare `global $wp_roles` before role cap setup.
* Fix - Follow-Up Emails: pass `null` appointment to variable-replacement filter when queue item has no appointment context.
* Fix - Admin calendar: server preload always spans prev/current/next month grids regardless of default view (day/week/month/list), so switching views serves preloaded appointments instantly instead of refetching via REST.
* Fix - Availability rules: priority input fills column width on global (Settings → Appointments) and staff availability tables (site and synced tabs).
BookingWP WooCommerce Appointments v5.3.11 Nulled
= [5.3.11] - June 9, 2026
Latest

Fixes​

  • Twilio SMS integration: restore hook registration removed in 5.1.0 (Appointments SMS settings, scheduling, and notifications with WooCommerce Twilio SMS Notifications 1.12+); {appointment_date} / time tokens use get_start_date() / get_end_date() so all-day civil dates match emails and order summary on non-UTC stores.
  • All-day (day/month duration) appointments after checkout: order summary, emails, and My Account show the same civil date as cart/checkout — get_start_date() / get_end_date() and email formatters use Fake UTC civil digits (gmdate + date_i18n) instead of wp_date() on stored midnight tokens, which shifted the calendar day on non-UTC site timezones.
  • All-day bookings: _local_timezone is written only for timed products in wc_appointments_get_posted_data(); WC_Appointment::set_all_day() / set_local_timezone() and the data store drop customer TZ meta on all-day saves — civil dates stay timezone-agnostic without per-caller guards.

BookingWP WooCommerce Appointments v5.3.10 Nulled
=[5.3.10] - June 2, 2026
Latest

Fixes​

  • Storefront appointment cost quote when catalog prices are entered inclusive of tax: footer HTML uses the same display amount as AJAX raw_price (not tax-stripped line_net), so logged-out customers see the correct gross total.
  • Availability / add-to-cart: day- and month-unit checks use Fake UTC civil tokens (gmdate / shared slot-token helpers) for past-date guards, span end calculation, and day-slot capacity keys — not wp_date() / site-TZ DateTime on the posted timestamp — so same-day bookings and slot lookup stay aligned on non-UTC stores (e.g. America/Vancouver).
  • Storefront calendar (no staff preference, day/month + staff): multi-staff indexed slot generation no longer runs the minute-mask loop on day/month products — use per-staff civil-day slots and union merge instead; no-preference day summary uses per-staff OR (max), not summed slot counts across merged fragments.
  • Admin panel create: day/month availability check and save use Fake UTC civil midnights for date/month ranges (matches storefront slots and get_day_civil_span_capacity keys); admin month calendar bounds for day/month products use the same civil UTC axis.
  • is_appointable() past-date guard for day/month products uses wc_appointments_is_past_request_date() (Fake UTC civil axis) instead of date() on _date, matching availability checks.
  • Admin panel create success message formats saved day/month ranges from appointment timestamps via wp_date() (not strtotime() on date strings).
BookingWP WooCommerce Appointments v5.3.9 Nulled
= [5.3.9] - May 25, 2026
Latest

Improvements​

  • Improved admin panel styling with bigger input selection.
  • Admin panel create/edit: datetime row shows a loading state while product details, first-available auto-pick, day slots, or availability AJAX run; success/error only after the check completes.
  • Admin panel create: first-available auto-pick scans the bookable horizon in 14-day chunks and stops at the first slot instead of loading the full range up front.

Fixes​

  • Admin panel create: availability no longer flashes loading twice or clears to blank before first-available prefill; date-only calendar prefill waits for day slots before checking; browse does not re-open after the user closes it during the same unavailable episode.
  • Admin panel: datetime loading no longer sticks when day-slot AJAX fails or returns empty, when a superseded availability request aborts, or while bootstrap waits only on an in-flight slots request (not missing cached data).
  • Slots / day & month products: timed global RRULE blocks (e.g. weekly Tue 4–6pm) block the whole civil day again — date-level checks use RRULE occurrence expansion, not midnight-only overlap, so higher-priority global rules override product day rules (RuleMinutesRruleCivilDayTest).
  • Admin panel browse: slot chips show remaining capacity (e.g. 1 available) on multi-capacity products when only one place is left, not only when two or more remain.
  • Slots: dynamic availability (indexing off) paints full half-open unappointable ranges on the minute mask — priority blocks no longer leave appointable boundary minutes (e.g. 10:00–11:00 block showing 10:59 slots); matches indexed mask painting.
  • Slots / calendars: minute/hour bookings that start at site midnight (including long durations such as 12 hours) block capacity again — timed overlap day-keys use Fake UTC site civil buckets for both occupancy indexing and slot lookup instead of mixing wp_date() site midnight with the civil UTC-midnight fast path.
  • Slots / calendars: multi-day day-unit occupancy for admin-created (site-local midnight) bookings — civil overlap keys use the site calendar date (Fake UTC) so every booked day blocks correctly (e.g. June 4–5 for a 2-day booking starting June 4); wc_appointments_get_posted_data() stores matching Fake UTC start/end for new day/month appointments.
  • Slots / calendars: multi-day day-unit products block every booked civil day again — occupancy uses live appointments; overlap day-keys use timezone-agnostic civil dates (gmdate on stored tokens), matching slot tokens, not wp_date() site-local midnight.
  • Admin panel create: first available date/time via one AJAX call (WC_Appointment_Slots_Provider::get_first_available_slot, same as storefront), including when the first slot is outside the current month; calendar day click/drag date-only prefill auto-picks the first time or opens browse once with noSlotsOnDateSelect when that day has no slots; browse auto-opens only on unavailable validation (not during silent auto-pick) and stays dismissible (no immediate re-open after close until date or product changes); live preview placeholder while slots load; panel expands when the product form is ready.
  • Slots / calendars: minute/hour day availability (storefront day_data, admin mini-calendar, time-slot lists) counts only bookable slot starts via shared WC_Appointment_Slots_Collection::slots_for_day_summary() on the same get_collection() engine — fully booked days no longer stay selectable when only sub-duration engine segments remain.
  • Slots / time picker: Availability check → The starting slot only no longer lists grid starts in appointable fragments shorter than the booking duration (phantom evening slots such as 19:00 on 12h/12h products when the index leaves a tail after a gap); full-day ranges still allow starts when duration exceeds the window (e.g. 25h in 24h).
  • Checkout validation (WC_Appointment_Cart_Manager::validate_appointment_order): re-validates cart slots via WC_Appointments_Controller::get_indexed_total_available_for_range() (same slot_matches_requested_range tolerance as add-to-cart) instead of strict start_ts equality; all staff together uses staff id 0 fan-out like is_appointable(); in-cart holds are excluded from overlap during the check.
  • Staff all together: cart booking no longer collapses multi-staff _staff_ids to a single _staff_id during WC_Appointment_Booking_Handler::create_appointment() availability merge.
  • Admin panel: WooCommerce Deposits on create — calculate_costs / create_appointment honour deposit choice and tax display (incl./excl. catalog); deposit footer quote and order item meta (_deposit_full_amount, etc.) match storefront; pay-deposit hides footer price edit (product deposit rules); pay-in-full edits full service price via raw_full_price; mistaken deposit-only overrides corrected on save.

About us

  • Babiato Forum - The webmaster community has been around for many years and pride ourselves on offering unbiased, critical discussion among people of all different backgrounds. We are working every day, updating Daily resource to make sure our community is one of the best.

Quick Navigation

User Menu