2.7.0
- Dropin migration:
wp gt-pb migrate-library [--dry-run] [--overwrite](or Settings -> Tools -> Import from dropin) copies the Marketers Delightmd_page_blockstable into this plugin preserving block IDs, so existing[page_block id="N"]shortcodes andblockIdblock references keep resolving. - Blocks can reference the library again:
blockIdis a registered attribute and renders the library row server-side. Editing one library block updates every placement, instead of each block carrying its own copy. - The block editor understands the reference: a linked block shows the library block’s title, ID, and badges, previews through the library’s own render route (so PHP, shortcodes, and wpautop match the front end), and hides the inline HTML/CSS/JS editors that render_block() would ignore. Missing and unpublished targets are called out instead of silently rendering nothing.
- Library modal offers Link alongside Copy code, so a placement can follow the library or take a one-off copy, deliberately.
- Unlink detaches a copy: the library code is written into the block’s own attributes and the reference is dropped.
- Fixed two paths that silently unlinked migrated blocks. The editor’s client-side block registration did not declare
blockId, so re-saving a page dropped it; the visual builder normalized it away on load and reserialized every section without it. Both now round-trip the link, and the builder locks a linked section’s editors instead of accepting edits that never render. marketers-delight/inline-page-blockis now covered by the block-name migration alongsidemarketers-delight/page-block.- Security: PHP execution now requires two independent gates — a site constant (
GT_PB_ALLOW_PHP, orMD_ALLOW_PHP_SNIPPETSfor sites coming from the dropin) and a save-time content checksum. Content mutated directly in the database no longer executes; it falls back to stripping PHP tags. Inline blocks need a further opt-in (GT_PB_ALLOW_INLINE_PHP/MD_ALLOW_INLINE_PHP) because post_content carries no separate checksum. - Display conditions work: they are saved from the block edit screen and evaluated when rendering positioned blocks (post types, page types, specific post IDs). Previously the UI existed but nothing was stored or checked.
- Dropin
md_hook_*positions are remapped to plugin positions and theme regions on import; anything with no equivalent is cleared to shortcode/block only and reported, rather than silently never rendering. - Schema: adds
php_checksum(table version 1.1), back-filled for existing PHP-enabled blocks on upgrade. - Render parity with the dropin, from diffing real output on live sites: library CSS is emitted once per request and hoisted into
<head>rather than inlined at every placement; library HTML is minified like the inline path already was. - Fixed
minify_css()collapsing the whitespace around+insidecalc(),clamp(),min()andmax(). The space is required there, soclamp(6.75rem, 6rem + 2.2vw, 9rem)became invalid and the whole declaration was dropped — section padding computed to 0 and clamped font sizes fell back to inherited.+is still collapsed in sibling selectors, where that is correct. - Fixed
minify_css()corrupting quoted strings.[style*="font-weight: 300"]and[style*="font-weight:300"]are different selectors, and collapsing the space merged them so one stopped matching. Quoted strings andurl()payloads are now preserved verbatim.
