2.4.0
Bundles v2.1.0 through v2.4.0 — major feature release.
Emmet HTML Expansion (NEW)
Type an abbreviation in the HTML editor, press Tab, get expanded HTML:
– div.hero>h1{Title}+p{Body} → nested section with heading and paragraph
– ul.menu>li.item\$*4>a[href="#"]{Link} → 4-item menu with auto-numbered classes
– img.avatar[alt=""] → self-closing void tag
Supported: tags, .class, #id, [attr="val"], {text}, > child, + sibling, *N multiply, \$ numbering. Cursor auto-jumps to the first empty slot.
Removed: Unreliable HTML class autocomplete (replaced by Emmet).
Frontend CSS Layers (NEW)
Three independent toggles under Page Blocks → Settings → Frontend CSS:
- Semantic Reset (~1KB) — modern reset, accessible images,
prefers-reduced-motion - Typography (~3KB) — system-font stack (zero external requests), responsive headings via
clamp(), 65ch measure, styled lists / blockquotes / code / kbd / tables - Utility Classes — ~330 Tailwind-inspired classes (grid, flex, spacing, typography, colors, borders, shadows, transitions) +
sm:md:lg:responsive variants. Frontend inlines ONLY the classes actually used on the page — no bloat. Builder loads the full set for autocomplete.
Top-Level Page Blocks Admin (NEW)
Moved out of Settings to its own top-level menu: – All Page Blocks — list table with bulk actions, search, status filter – Add New — full edit form with Monaco editors, live preview, position picker – Settings — existing settings page – License — license management
Shortcode Library (NEW)
Reusable blocks stored in a custom database table (wp_gt_page_blocks):
– [page_block id="123"] — embed by ID
– [page_block slug="hero-section"] — embed by slug
– Theme-independent position hooks via gt_pb_get_positions() filter (wp_head, wp_footer, the_content, loop_start, etc.)
Bug Fixes
- Fixed
cssClassesconfig being serialized as JSON object (array_unique key gaps) —Array.isArray()now passes on the JS side.
Compatibility
- WordPress 6.0+
- PHP 8.1+
- Works with any WordPress theme
- PHPStan level 5: 0 errors
