1.25.0 - Soft Gate, email access links for gated content
Version 1.25.0 adds Soft Gate: a cache-friendly alternative to role-based gating that trades a reader's email address for a magic link, without taking the page out of the cache. It ships with a Gravity Forms merge tag, three support commands, and screenshots of every state. Also included: a documented standard for how these docs get written.
- [FEATURE] Adds Soft Gate — lead-capture gating that keeps working behind a full-page cache. PHP serves the full content to every visitor, so the response stays identical and cacheable; the gate is applied in the browser, blurring and clipping the article behind a dialog that asks for an email address. The visitor gets a magic link, clicks it, and reads the content for a configurable number of days. Enable it per post from the block editor sidebar, or across a whole post type from Settings → Content Gating. Three behaviors when access expires: re-prompt for a new link, show a login prompt, or block with no retry.
- [FEATURE] Adds a Gravity Forms path for access requests, so the client's own form handles the capture and their notifications and feeds — MailChimp, HubSpot — fire normally. A new
{magic_link_url}merge tag carries the link into notifications and feeds, and only into those: anywhere browser-facing it is blanked and logged, so the link cannot be printed back onto the page. - [FEATURE] Adds
wp yoko soft_gate_tokens,soft_gate_purgeandsoft_gate_revokeso support can answer "was a link ever issued for this person", run the cleanup when cron is not firing, and invalidate the links issued to an address. - [DOCS] Documents Soft Gate with screenshots of every configuration and visitor state, including the error states, and adds a documentation standard — be pithy, screenshot every user-visible surface, and always state both block-editor and classic/page-builder behavior — plus the throwaway-WordPress tooling that produces the screenshots.
Soft gating is not access control. The full content is in the HTML of every response, so it is readable by anyone who views source or clears a cookie. It buys friction and lead capture, not privacy. Anything that must stay private still needs the role-based hard gate — and a post with hard-gate roles set is never soft gated, so the two never fight.
The per-post toggle is block-editor only. On a post type served by the classic editor, or taken over by a page builder, the Soft Gate panel does not exist; gate those post types wholesale instead. The hard gate's metabox is unaffected and renders in both editors.