BioLink Pro v2.4.0
Added
- A/B testing on link blocks — disclosure section in
LinkEditorlets you add N variants (key, label, URL, weight).LinkBlock::pickVariant()picks deterministically per visitor (hash of IP + page + uuid) so the same visitor sees the same variant on repeat visits. Variant key is appended to the click URL (?v=A) and recorded in a newvariant_keycolumn onwp_biolink_clicks. Equal weights work out of the box; weighted splits supported. - Passcode-unlock analytics — new
wp_biolink_unlockstable, written from a singlebiolink/link/unlockedaction subscriber so both the inline modal (UnlockController) and the no-JS template_redirect (UnlockHandler) feed the same metric. New RESTGET /analytics/pages/{id}/unlocksreturns per-block counts. Lock chip in admin shows a small purple badge with the lifetime unlock count. - Real Shop page UI — replaces the v2.0 stub. Filtered grid view of
product_cardblocks on the current page with thumbnail, name, price, on/off toggle, inlineProductCardEditor, and "+ Add product" that appends a new product_card block directly (skipping the centralized Add modal). Products still live in the sameblocksarray — no schema split. - Per-page Custom CSS — new "Advanced" card on the Design page. Textarea writes to
settings.custom_css;ThemeEngineemits it in a separate<style id="biolink-theme-…-custom">block right after the theme block.</style>sequences are stripped to prevent escape; users target.bio-page,.bio-block--{type},.bio-header, etc. - Pages list search + status filter — debounced search input + Published/Draft dropdown at the top of the Pages list, wired through
PagesApi.list({ search, status }). - Migrations 006 + 007 —
biolink_unlockstable andvariant_keycolumn onbiolink_clicks.BIOLINK_DB_VERSIONbumped to2.
Changed
Reporter::unlockCounts( $page_id )returns{ uuid: count }map. Light query — no date-range arg since unlock counts are lifetime today.- Click rate limit unchanged (10/IP/link/60s); A/B variant key passes through cleanly so rate limiting still applies per link regardless of variant.
Notes
- Per-variant click breakdown isn't surfaced in the admin yet — column is being written, dashboard card is a v2.5 candidate. Until then, query directly:
SELECT variant_key, COUNT(*) FROM wp_biolink_clicks WHERE link_id = X GROUP BY variant_key. - Custom CSS is trusted input from
biolink_manage_pagesusers — same model as the WordPress theme editor. No CSS parser, no per-property whitelist; the</style>strip is the only safety net.
Install: download biolink-pro-v2.4.0.zip below and upload via Plugins → Add New → Upload Plugin.
Auto-update: if you already have BioLink Pro installed, this release will appear under Dashboard → Updates within ~12 hours (or click "Check Again" to force a refresh).