About this plugin
1 renders the post editor canvas inside an iframe on every
post, unconditionally. ACF PRO cannot initialise its field forms inside
1 every ACF block is forced into preview mode with
its fields squeezed into the right-hand sidebar — the familiar inline
“edit mode” disappears.
1 still ships the old non-iframed canvas rendering path; core
just stopped using it. This plugin serves a copy of the wp-editor script
bundle with the single flag that controls this flipped
1
editing experience: ACF block fields render inline in the main canvas,
full width, with working WYSIWYG, media pickers and repeaters.
Safety properties
- No core files are modified on disk. The patched copy lives in
wp-content/uploads/twoten-inline-canvas/ and core stays pristine
( wp core verify-checksums passes).
- Scoped: only post.php / post-new.php receive the patched bundle.
The site editor — which requires the iframe — and all other admin
screens get stock WordPress.
- Self-healing: the patched copy is keyed to the WordPress version and
bundle mtime, so it regenerates automatically after every core update.
- Fail-safe: the patch is only applied when the flag appears exactly once
in the bundle. If a future WordPress changes that code, the plugin
serves the stock bundle and the editor simply returns to the iframed
canvas — nothing breaks.
- Does nothing at all on WordPress below 7.1 (safe to install ahead of an
upgrade) and when SCRIPT_DEBUG is enabled.
Block requirements
Inline edit mode is an ACF Blocks v2 behaviour. 8+ defaults
1+, which removes edit mode by
design (iframe or not) — every block becomes a preview with an
“Edit Block” modal. This plugin therefore pins the default back to v2
via ACF’s acf/blocks/default_block_version filter. Your blocks should:
- not set "blockVersion": 3 explicitly in block.json (an explicit
value is respected and keeps that block in v3);
- set "acf": { "mode": "edit" } (and ideally "supports": { "mode": false } )
so blocks open as forms rather than previews.
Blocks saved while stuck in preview mode carry "mode":"preview" in their
saved markup, which overrides the block default. For blocks whose mode
toggle is hidden ( "supports": { "mode": false } ) the plugin resets that
to the block’s configured mode when the post is parsed in the editor, and
the content self-heals on the next save. Blocks that allow toggling keep
the saved choice. To clean everything in one go instead:
wp search-replace '"mode":"preview"' '"mode":"edit"' wp_posts --include-columns=post_content
Updates
org plugin directory like any
other plugin. Updates do not apply when the file is run as a must-use
plugin.
When to remove this plugin
This is a compatibility shim, not a permanent architecture. Remove it once
ACF PRO supports field editing inside the iframed canvas — check the ACF
changelog before major WordPress upgrades. After any WordPress core
update, open a post in the editor and confirm blocks still show inline
forms; if the fail-safe has kicked in they will show previews again, and
the plugin needs a new patch pattern for that WordPress version.
Disabling programmatically
add_filter( 'tts_inline_canvas_enabled', '__return_false' );