Solvian Academy Connect

وەسف

Solvian Academy Connect integrates your WordPress website with the Solvian platform. After installation and configuration you get:

  • Live course catalog sourced directly from Solvian
  • Calendar with start dates per course
  • Online booking form (private individuals, freelancers, and business)
  • Waitlist when no dates are available
  • Multi-course shopping cart
  • Booking management in the WordPress admin panel
  • Optional Mollie payment integration (iDEAL, creditcard, Bancontact, invoice)
  • Optional Zitadel OIDC login for returning customers
  • Configurable location visibility (filter and location names can be hidden site-wide)
  • Configurable notification e-mail addresses for bookings/payments and waitlist

External Services

This plugin communicates with the following external services:

  • Solvian API (your own Solvian environment, e.g. https://yourorg.solvian.nl) — to fetch course catalog, availability, and submit bookings. Solvian privacy policy
  • Mollie (https://api.mollie.com) — optional, for online payment processing. Only used when payment is enabled and a Mollie API key is configured. Mollie privacy policy
  • Zitadel (your own Zitadel instance) — optional, for customer login (OIDC). Only used when Zitadel login is enabled. Zitadel privacy policy
    No data is sent to these services without the site administrator explicitly entering API credentials.

دامەزراندن

  1. Upload the plugin folder to /wp-content/plugins/
  2. Activate the plugin via Plugins in WordPress admin
  3. Go to Solvian Settings and enter:
    • Base URL (e.g. https://yourorg.solvian.nl)
    • Bearer token (obtain from Solvian or IT-Legends)
  4. The required pages are created automatically on activation

Shortcodes

  • [solvac_courses] — Course catalog page
  • [solvac_featured_courses] — Compact grid widget of featured/recent courses (e.g. for the homepage)
  • [solvac_booking] — Booking form
  • [solvac_my_page] — Customer account page (requires Zitadel)
  • [solvac_cart] — Shopping cart

پهد

Do I need a Solvian account?

Yes. You need an active Solvian Academy account and API credentials. Contact IT-Legends or Solvian to obtain these.

Is Mollie required?

No. Mollie integration is optional. Bookings can be submitted without payment (invoice flow). Enable Mollie in Settings Payment when you want to offer online payment.

Does the plugin store personal data?

Yes. Booking data (name, email, company) is stored temporarily in a private WordPress custom post type. Enable debug mode only when troubleshooting — debug logs are stored for a maximum of 24 hours. See your privacy policy for details.

What PHP version is required?

PHP 7.4 or higher. Tested on PHP 8.1 and 8.2.

How do I flush the course cache?

Go to Solvian Settings and click Clear cache, or run wp solvian clear-cache via WP-CLI.

پێداچوونەوەکان

هیچ پێداچوونەوەیەک نەنووسراوە بۆ ئەم پێوەکراوە.

بەشداربووان و گەشەپێدەران

“Solvian Academy Connect” نەرمەواڵەیەکی سەرچاوە کراوەیە. ئەم کەسانەی خوارەوە بەشدارییان تێدا کردووە.

بەشداربووان

“Solvian Academy Connect” وەربگێڕە بۆ زمانەکەی خۆت.

دەتەوێت بەشداربیت لە گەشەپێدان؟

گەڕان لە کۆدەکەدا بکە، سەیری تەمارگەی (SVN) بکە، یان بەشداربە لە ڕووداوتۆماری گەشەپێدان لە ڕێگەی (RSS).

ڕووداوتۆمارگەریی گۆڕین

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

1.0.0

  • Initial release
  • Live course catalog from Solvian API
  • Online booking form
  • Shopping cart for multi-course bookings
  • Mollie payment integration (iDEAL, creditcard, Bancontact, invoice)
  • Zitadel OIDC login integration
  • Booking management in WordPress admin
  • WP-CLI commands for cache management