Releases: nurkamol/biolink-pro
Release list
BioLink Pro v2.7.1
Added
- Inline-editable slug in the preview pane's URL bar. The slug portion (after the prefix) is now a click target — click it, the bar swaps to an input pre-selected on the slug, Enter or blur saves via the existing
setSlug(), Escape cancels. A small pencil cue fades in on row hover so the affordance is discoverable. Reuses the v2.7.0 backend; this is purely a more findable entry point than the Design → Page card.
Install: download biolink-pro-v2.7.1.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).
BioLink Pro v2.7.0
Added
- Configurable URL prefix. New
Settings → General → Page URL prefixfield controls the rewrite slug for every bio page. Default isbio(so pages live at/bio/{slug}). Change it tolinksand every page now lives at/links/{slug}.BioLinkPagePostType::currentSlug()reads from saved settings; the CPT re-registers +flush_rewrite_rules(false)runs automatically on save viaupdate_option_biolink_settings. Reserved slugs (wp-admin,wp-json, etc.) are rejected. - Per-page slug editor on the Design page. New "Page" card at the top exposes the page title and the URL slug. Slug field shows the
yoursite.com/{prefix}/prefix on the left so you see exactly what the public URL becomes; input sanitizes to[a-z0-9-]on blur and saves viaPagesApi.update({slug}). setSlug()on BuilderContext — typed mutation for the slug, normalizes input + persists via the existing pages PATCH endpoint.
Notes
- Changing the URL prefix flushes the rewrite cache, but existing search-engine links to
/bio/{old-slug}will 404 until indexed under the new prefix. Don't change it on a high-traffic page without a 301 plan. - The
BioLinkPagePostType::REWRITE_SLUGconstant is now @deprecated. It still equals'bio'for backwards compat with any external code referencing it, but the CPT registration usescurrentSlug().
Install: download biolink-pro-v2.7.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).
BioLink Pro v2.6.1
Fixed
- Content area card was silently a no-op in v2.6.0. The CSS used an attribute selector
body.bio-body[ style*="--bio-content-card:1" ]to gate the card styling, butThemeEngineemits its variables inside a<style>block — never on the body's inlinestyle=attribute — so the selector never matched and the card never rendered.ThemeEnginenow emits the full card rule (background, border-radius, backdrop-filter, margin, shadow, plus a@media (max-width: 540px)reset) directly inside the dynamic style block so it actually applies. The same fix works for shortcode embeds.
Added
- Wallpaper overlay color picker — the image overlay was hardcoded to black; now you can pick the tint color (white, brand color, anything). Sits next to the existing Overlay opacity slider in the Wallpaper editor. ThemeEngine generates the gradient with the chosen color at the chosen opacity.
Install: download biolink-pro-v2.6.1.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).
BioLink Pro v2.6.0
Added
- Wallpaper position + blur — Background editor (image type) now exposes
Position(Cover-center / Cover-top / Cover-bottom / Contain / Tile) and aBlurslider (0–30 px). The image renders behind a fixedbody.bio-body::beforepseudo so blur applies cleanly without affecting the foreground content. - Content area card — new "Content area" card on the Design page. Three modes:
- Transparent (default, current behavior)
- Solid card —
.bio-pagegets a configurable color + opacity background, rounded corners, drop shadow. Wallpaper fills the desktop viewport behind it. - Frosted glass — solid card +
backdrop-filter: blur()so the wallpaper shows through with a frosted effect.
- Card max-width slider (380–960 px) — controls the desktop column width.
- Card corner radius slider (0–48 px).
- Card opacity slider (10–100%) — fine-tune solid/glass card transparency.
Changed
ThemeEnginebackground rendering refactored. Thebody.bio-bodyselector no longer paints the bg directly — that moved tobody.bio-body::before(a fixed full-viewport pseudo) so the newbg_blurfilter applies to the image without blurring the content. Shortcode embeds (.bio-embed-{id}) keep the inlinebackground:rule since blur doesn't make sense scoped to an inline embed.- Image overlay slider max bumped from 80% to 90% (still keeps the image faintly visible at max).
DB
- 8 new page settings keys:
bg_position,bg_blur,content_bg_type,content_bg_color,content_bg_opacity,content_blur,content_radius,content_max_width. Stored in the existing_biolink_data.settingsJSON — no schema bump needed.
Notes
- On screens narrower than 540 px, the content card drops its border-radius + shadow + horizontal margin so it spans the full viewport (mobile-first stays readable).
Frosted glassmode usesbackdrop-filter, which Safari < 9 and some Linux Firefox builds don't support — they'll fall back to the solid card automatically.
Install: download biolink-pro-v2.6.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).
BioLink Pro v2.5.2
Fixed
- Version history + Schedule drawer no longer hide under the WP admin bar. The drawer overlay was using
z-index: 100andinset: 0, so the header ("Version history") was clipped by the WordPress admin bar at the top of the screen. Drawer overlay now sits attop: 32px(46px on small screens) withz-index: 99998— admin bar remains visible above, drawer header is fully readable.
Install: download biolink-pro-v2.5.2.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).
BioLink Pro v2.5.1
Changed
- Top-level pages now flush-left instead of centered. Removed
margin: 0 autofrom Dashboard / Pages / Analytics / Audience / Changelog / Settings — the centered max-width container left a visible gap between the sidebar and the page content on wider monitors. Padding (24px 28px 60px) is preserved. Analytics also gained the same padding (it was missing it).
Install: download biolink-pro-v2.5.1.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).
BioLink Pro v2.5.0
Added
- Per-variant click breakdown UI — closes the v2.4 A/B testing loop.
Reporter::variantBreakdown()+GET /analytics/pages/{id}/variantsreturn rows grouped by(link_id, variant_key)with click counts. Analytics page now renders a "🧪 A/B test results" card showing per-variant click count + share % when any variant data exists for the selected window. - Schedule rollup drawer — new clock icon in the BuilderShell top bar opens a right-side drawer listing every block with
_start_ator_end_atset. Status dot (active / upcoming / expired / open-ended), sorted by date, derived from the in-memory page blocks — no extra REST call. - Page revisions — every save snapshots the full
_biolink_dataJSON into the newwp_biolink_revisionstable (last 20 per page, older ones pruned). NewGET /pages/{id}/revisions+POST /pages/{id}/revisions/{rev_id}/restore. History icon in the BuilderShell top bar opens the Revisions drawer with relative timestamps, author names, and a Restore button per row (current revision is read-only). - Audience tab + CSV export — new top-level
/audienceroute with All / Newsletter / Contact tabs. Newsletter and contact-form submissions are persisted into the newwp_biolink_submissionstable via subscribers onbiolink/newsletter/subscribed+biolink/contact/submittedactions.Export CSVdownloads the current filter as a UTF-8 CSV with up to 10,000 rows. Audience nav entry restored to the sidebar. - OG image generator —
Seo\OgImageGeneratorrenders a 1200×630 PNG per bio page using GD (no font dep, uses GD's built-in pixel font; brand-font upload is a v2.6 candidate). Caches touploads/biolink-pro/og/{page_id}-{hash}.png, hash includes headline/handle/subheadline/avatar_id/theme so it regenerates on relevant changes.Seo\MetaTagsfalls back to the generated card when no customog_image_idis set. - New
biolink/page/savedaction — fires afterPageRepository::saveData()succeeds. Used internally by the revisions subscriber; available to third parties.
Changed
- Padding on top-level admin pages —
Dashboard,Pages,Analytics,Audience,Changelog,Settingsall getpadding: 24px 28px 60px; margin: 0 auto;so they breathe away from the sidebar like Links and Design do.
DB
BIOLINK_DB_VERSIONbumped to4. New migrations 008 (revisions table) + 009 (submissions table). Both run automatically on next activation orplugins_loadedversion check.
Notes
- OG cards are intentionally lightweight (bitmap font). A brand-font upgrade with bundled Inter is in the v2.6+ queue if you want pretty social cards.
- Revisions only snapshot the builder JSON, not the WP post itself (title / slug / status). For those, WP core's built-in revisions still work since the CPT supports
revisions.
Install: download biolink-pro-v2.5.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).
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).
BioLink Pro v2.3.1
Added
- Copy-shortcode button in the builder top bar (
</>icon, sits between Publish and the QR launcher). Click →[biolink id="N"]is copied to the clipboard, the icon flips to a green check + "Copied!" tooltip for 1.8s. Tooltip on hover shows the exact shortcode so you can preview before clicking.
Install: download biolink-pro-v2.3.1.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).
BioLink Pro v2.3.0
Added
[biolink]shortcode — embed a published bio page inside any post / page / widget. Acceptsid="123"orslug="alvasti", plusheader="0"to hide the avatar block. Output is wrapped in.bio-embed.bio-embed-{id}with theme CSS scoped to that selector, so each embed is independently themed and can coexist with the host page's styles.[biolink_block]shortcode — render a single block by uuid.[biolink_block id="123" uuid="abc-…"]. Useful for surfacing one product card / donation form / countdown without the whole bio header.ThemeEngine::renderStyleBlock( $slug, $settings, $selector )— third arg defaults tobody.bio-body(full-page renders) but accepts any selector. Shortcodes pass.bio-embed-{post_id}so each embedded page is independently themed. The background rule omitsbackground-attachment: fixedfor embeds so they don't escape their container.- Shortcode-aware asset loading —
Frontend\Shortcodesenqueuesassets/frontend/biolink.{css,js}on any post that contains[biolink]or[biolink_block](viahas_shortcode). Bio-page singulars already enqueue viaAssets, so this only kicks in for embeds living elsewhere. .bio-embedstyling inassets/frontend/biolink.css— max-width 560px, centered, subtle elevation, internal gap between blocks.
Notes
- Locked blocks inside an embed still gate correctly (the placeholder + inline unlock modal both work in shortcode contexts).
- Click tracking, schedule windows, and visibility toggles all work in shortcode renders since they're enforced at
PageRendererlevel. - Unpublished pages render as nothing on the public site; logged-in editors see an HTML comment explaining why.
Install: download biolink-pro-v2.3.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).