v0.46.0
v0.46.0
- Bricks pages now get a real
.md(Phase 2 of the page-builder plan;
bricksleavesBuilderDetector::AWAITING_ADAPTER, which is the whole
phasing mechanism — no other rule changed). The newBricksAdapterrenders
a Bricks-mode post through Bricks' own\Bricks\Frontend::render_data()
rather than reimplementing its element types, the same "read the builder's
data to decide, read the vendor to render" shapeBuilderDetectoralready
used. A newBuilderAdapterinterface and a third branch in
ContentRenderer::render(), tried before the block/classic branches, is the
seam:sysmda_markdown_builder_adapters(Advanced) is the extension point.
A post switched back to Render with WordPress is unaffected — the adapter
requires the render mode AND the Bricks plugin active, so with either
missing the ordinarypost_contentpipeline is the correct answer, exactly
as it was before this release. - Fixed the one defect the Phase 0 reconnaissance found: Bricks' own image
lazy-loading swapssrcfor an inline SVG placeholder and moves the real
URL todata-srcunless\Bricks\Database::$page_settings['disableLazyLoad']
is set for the render — the adapter now brackets every render with a
save/restore of that flag, so every Bricks image converts to a normal
instead of a meaningless data URI. - New exclusion list:
sysmda_markdown_excluded_builder_elements
(Stable), a panel field and filter for page-builder chrome — Bricks'
form, nav menu, share bar, table of contents and breadcrumbs elements are
excluded by default, the same waysysmda_markdown_excluded_classes
excludes a CSS class. Additive to the built-in defaults, never a
replacement (the 0.40.0 rule). The existingmd-excludeclass already
worked on Bricks elements with no code change needed — Bricks emits it
verbatim on the element's wrapper. - The cache validator now covers Bricks content: the render mode, a hash
of the stored element tree, and the modification date of any referenced
templateelement's own post are folded into the existing dependency
fingerprint, so a mode flip or a template edit moves the ETag even though
post_modified_gmtdoes not. - The front-matter
descriptionfallback and/llms.txtentries now have
a Bricks-aware last resort, after Rank Math and the excerpt: a cheap,
unrendered read of the stored tree's text-bearing settings, run through the
same exclusion pass as the body. A Bricks post'spost_contentis never
used for this, even when the adapter's fallback finds nothing — it can hold
stale prose left over from before the page was rebuilt in Bricks, and
publishing that would reproduce, in the description field, the exact
"confidently wrong" failure the page-builder veto exists to prevent in the
body. - Advanced-level toggle:
sysmda_markdown_builder_suppress_content_filters
(default on) removes foreignthe_contentcallbacks — a related-posts
block, a CTA — while Bricks' ownpost-contentelement renders, since that
element calls the fullthe_contentchain internally and would otherwise
reintroduce exactly the injected content this pipeline avoids everywhere
else. Flagged as a maintainer-reversible design choice; returnfalsefrom
the filter to accept whatever a real visitor sees there instead. sysmda_markdown_prewarmstays off for Bricks posts as for everything else:
element-level visibility conditions are unverified under WP-Cron's missing
request context (documentation only, no code change).- Elementor remains the only builder in
AWAITING_ADAPTER; Divi, WPBakery,
Oxygen, Beaver Builder and Breakdance stay permanently unsupported.