New: geboortedatumveld toegevoegd bij elke deelnemer op het inschrijfformulier (los cursusformulier en winkelmandje-checkout, inclusief dynamisch toegevoegde deelnemers). Instelbaar via Instellingen → Deelnemersvelden of dit veld verplicht is; wordt meegestuurd naar Solvian als participantBirthDate op de booking line.
1.0.15
New: optie “Altijd deze locatie gebruiken” bij de generieke agenda-locatie (Instellingen → Agenda-knoppen) — toont de ingestelde locatie altijd in de agenda-afspraak, ook wanneer Solvian zelf een locatie meegeeft.
1.0.14
New: “Voeg toe aan agenda” knoppen zijn nu optioneel via Instellingen → Agenda-knoppen (standaard aan).
New: instelbare generieke locatie die wordt gebruikt in de agenda-afspraak wanneer Solvian geen locatie meegeeft bij een startmoment (bijv. e-learning of in-company cursussen).
1.0.13
New: “Voeg toe aan agenda” knoppen op de boekingsbevestiging (na factuur-boeking en na geslaagde Mollie-betaling) — een Google Agenda-link per geboekt startmoment plus een .ics-download voor Outlook/Apple Agenda. Alle datum/tijdzone-berekening gebeurt serverside op basis van de sitetijdzone.
New: Schema.org Course/CourseInstance structured data (JSON-LD) op cursusdetailpagina’s, met naam, beschrijving, prijs en tot 20 aankomende startdata/locaties — maakt cursuspagina’s geschikt voor Google’s Course rich result. Wordt via wp_head uitgevoerd zodat het nooit door content-filtering kan worden verwijderd.
1.0.12
New: [solvac_featured_courses] shortcode — a compact grid widget showing a handful of courses (e.g. on the homepage), driven by Solvian’s per-course “Uitlichten op website” toggle. Supports limit, columns, title, and button/button_text attributes; falls back to showing regular courses if none are flagged as featured yet.
1.0.11
Fix: BTW was calculated per settings default everywhere instead of per course. The shopping cart page didn’t look up Solvian’s per-course VAT at all, and the checkout page only used the first cart item’s VAT rate for the whole order — both now calculate VAT per line item, so mixed carts (exempt + taxed courses) total correctly.
Fix: a course with no VAT data returned by Solvian’s price-calculation endpoint was treated as 0% (“btw-vrijgesteld”), which could silently charge €0 VAT on every course, not just exempt ones. A missing/empty response now falls back to the configured default rate instead of assuming exemption; only an explicit 0% or exempt VAT code from Solvian is now trusted.
New: courses that Solvian marks with an exempt VAT code (e.g. “Vrij”) are now automatically detected and shown as “btw vrijgesteld” — on the course detail page, in the shopping cart, and at checkout — instead of a hardcoded default percentage. A manual “btw-vrijgesteld” override is also available per course on the Verrijking admin page for cases where Solvian’s data can’t be used directly.
Fix: “Cache legen” in Settings deleted every visitor’s shopping cart along with the intended API cache, because both were stored as similarly-prefixed transients. Cart data is now explicitly excluded from the cache-clear action.
Fix: on the checkout page, switching the “Boek ik als” selection to Particulier could reset the order subtotal to €0,00 in the sidebar summary due to a JavaScript data-parsing issue. The total recalculation now safely falls back to the correct, server-rendered amount instead of blanking it.
New: the Verrijking (course enrichment) admin page’s “Introductietekst” and “Programma” fields now use a rich-text editor instead of a plain text box, so formatted HTML (bold, links, lists) can be entered directly.
Fix: the course detail page checked VAT status without a specific start date, so Solvian couldn’t resolve a concrete price/VAT line and the page silently fell back to the default rate. It now uses the course’s nearest upcoming start date for this check, matching the cart and checkout pages.
1.0.10
Fix: booking as a private individual (Particulier) could silently fail to submit. The private-person phone field shared its HTML name with the company phone field, so the hidden company field’s required attribute blocked native form validation. The private phone field now has its own name and required-state handling.
1.0.9
New: separate, configurable notification e-mail addresses for booking/payment notifications and waitlist notifications (Settings → Notificaties). Both fall back to the site administrator e-mail when left empty.
1.0.8
Fix: clicking a date in the course detail page’s calendar view navigated straight to the old booking page instead of adding the course to the cart, unlike the list view. Calendar view now uses the same add-to-cart behaviour as the list view.
1.0.7
Change: simplified the Startdata list’s date indicator to a plain calendar icon (matching the site’s existing icon style) instead of a styled date card.
1.0.6
Change: restyled the Startdata list’s date badge from a flat dark square into a calendar-card look (superseded by 1.0.7).
1.0.5
New: “Locatie tonen” setting to show/hide location entirely. When disabled, the location filter is removed and location names are hidden across the catalog, course detail page, cart, checkout, and account pages.
1.0.4
Fix: phone number field was not actually required and accepted invalid formats; it is now required with format validation, both client- and server-side.
Fix: customers booking as a private individual could add multiple participants; the checkout form now restricts private bookings to a single participant.
1.0.3
Fix: language and month filters on the course detail page’s calendar section stopped working under some themes. The filtering logic depended on an inline script that WordPress doesn’t guarantee prints after the shortcode output; it now lives in the plugin’s static frontend.js instead.
1.0.2
Fix: catalog page’s card/list view toggle no longer left the previous button looking active after switching views.
Fix: location filter on the catalog page returned no results — course event locations are now cached from the Availability API (mirroring the existing price cache) and warmed automatically after a cache clear and daily via cron.
Fix: catalog category filter now supports selecting/deselecting all categories at once, and a shareable ?cat= URL parameter to link directly to a pre-filtered category view.
Fix: catalog grid cards misaligned when a category label or course subtitle wrapped to two lines; card content now reserves consistent height across a row.
Fix: moved the catalog page’s view/filter JavaScript out of a per-page inline script into the plugin’s static frontend.js. The inline version depended on WordPress printing the script tag after the shortcode ran, which isn’t guaranteed under every theme (notably some block themes) — this caused the whole catalog UI to be non-interactive with no console error.
Fix: the four companion storefront themes (bhv-ehbo, comm-training, it-academy, solvian) referenced the plugin’s old pre-rename class name (SCE_Stable_Plugin) and shortcode ([solvian_course_grid]), so switching to any of them silently fell back to static demo content instead of live Solvian data. Updated to the current SOLVAC_Plugin class and [solvac_courses] shortcode.
1.0.1
Renamed shortcodes from solvian_* to solvac_* prefix per WordPress plugin guidelines
Wrapped shortcode_booking output with wp_kses() to satisfy escaping requirements