{"id":358027,"date":"2026-09-16T08:44:19","date_gmt":"2026-09-16T08:44:19","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/classic-editor-canvas-for-acf-blocks\/"},"modified":"2026-09-16T08:44:01","modified_gmt":"2026-09-16T08:44:01","slug":"twoten-inline-canvas-for-acf-blocks","status":"publish","type":"plugin","link":"https:\/\/fr.wordpress.org\/plugins\/twoten-inline-canvas-for-acf-blocks\/","author":18441964,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"TwoTen Inline Canvas for ACF Blocks","header_author":"TwoTen Studio","header_description":"Restores the non-iframed block editor canvas on post edit screens (WordPress 7.1+), so ACF PRO blocks render their field forms inline in the canvas (\"edit mode\") instead of being forced into preview mode with sidebar-only fields.","assets_banners_color":"1e2733","last_updated":"2026-09-16 08:44:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/twotenstudio\/twoten-inline-canvas","header_author_uri":"https:\/\/twotenstudio.co.uk","rating":0,"author_block_rating":0,"active_installs":40,"downloads":117,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"carmex","date":"2026-09-16 08:44:01","revision":3698201}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3698201,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3698201,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3698201,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3698201,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3698201,"resolution":"1","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"ACF block fields rendering inline in the editor canvas (edit mode)\ninstead of being forced into the sidebar."}},"plugin_section":[],"plugin_tags":[2211,148857,4121,1332,1860],"plugin_category":[46,59],"plugin_contributors":[281019],"plugin_business_model":[],"class_list":["post-358027","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-block-editor","plugin_tags-blocks","plugin_tags-editor","plugin_tags-iframe","plugin_category-editor-and-writing","plugin_category-utilities-and-tools","plugin_contributors-carmex","plugin_committers-carmex"],"banners":{"banner":"https:\/\/ps.w.org\/twoten-inline-canvas-for-acf-blocks\/assets\/banner-772x250.png?rev=3698201","banner_2x":"https:\/\/ps.w.org\/twoten-inline-canvas-for-acf-blocks\/assets\/banner-1544x500.png?rev=3698201","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/twoten-inline-canvas-for-acf-blocks\/assets\/icon-128x128.png?rev=3698201","icon_2x":"https:\/\/ps.w.org\/twoten-inline-canvas-for-acf-blocks\/assets\/icon-256x256.png?rev=3698201","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/twoten-inline-canvas-for-acf-blocks\/assets\/screenshot-1.png?rev=3698201","caption":"ACF block fields rendering inline in the editor canvas (edit mode)\ninstead of being forced into the sidebar."}],"raw_content":"<!--section=description-->\n<p>WordPress 7.1 renders the post editor canvas inside an iframe on every\npost, unconditionally. ACF PRO cannot initialise its field forms inside\nthat iframe, so from 7.1 every ACF block is forced into preview mode with\nits fields squeezed into the right-hand sidebar \u2014 the familiar inline\n\"edit mode\" disappears.<\/p>\n\n<p>WordPress 7.1 still ships the old non-iframed canvas rendering path; core\njust stopped using it. This plugin serves a copy of the <code>wp-editor<\/code> script\nbundle with the single flag that controls this flipped\n(<code>shouldIframe: true<\/code> becomes <code>false<\/code>), which restores the pre-7.1\nediting experience: ACF block fields render inline in the main canvas,\nfull width, with working WYSIWYG, media pickers and repeaters.<\/p>\n\n<p><strong>Safety properties<\/strong><\/p>\n\n<ul>\n<li>No core files are modified on disk. The patched copy lives in\n  wp-content\/uploads\/twoten-inline-canvas\/ and core stays pristine\n(<code>wp core verify-checksums<\/code> passes).<\/li>\n<li>Scoped: only <code>post.php<\/code> \/ <code>post-new.php<\/code> receive the patched bundle.\nThe site editor \u2014 which requires the iframe \u2014 and all other admin\nscreens get stock WordPress.<\/li>\n<li>Self-healing: the patched copy is keyed to the WordPress version and\nbundle mtime, so it regenerates automatically after every core update.<\/li>\n<li>Fail-safe: the patch is only applied when the flag appears exactly once\nin the bundle. If a future WordPress changes that code, the plugin\nserves the stock bundle and the editor simply returns to the iframed\ncanvas \u2014 nothing breaks.<\/li>\n<li>Does nothing at all on WordPress below 7.1 (safe to install ahead of an\nupgrade) and when <code>SCRIPT_DEBUG<\/code> is enabled.<\/li>\n<\/ul>\n\n<p><strong>Block requirements<\/strong><\/p>\n\n<p>Inline edit mode is an ACF Blocks v2 behaviour. ACF PRO 6.8+ defaults\n    block.json blocks to v3 on WordPress 7.1+, which removes edit mode by\ndesign (iframe or not) \u2014 every block becomes a preview with an\n\"Edit Block\" modal. This plugin therefore pins the default back to v2\nvia ACF's <code>acf\/blocks\/default_block_version<\/code> filter. Your blocks should:<\/p>\n\n<ul>\n<li>not set <code>\"blockVersion\": 3<\/code> explicitly in <code>block.json<\/code> (an explicit\nvalue is respected and keeps that block in v3);<\/li>\n<li>set <code>\"acf\": { \"mode\": \"edit\" }<\/code> (and ideally <code>\"supports\": { \"mode\": false }<\/code>)\nso blocks open as forms rather than previews.<\/li>\n<\/ul>\n\n<p>Blocks saved while stuck in preview mode carry <code>\"mode\":\"preview\"<\/code> in their\nsaved markup, which overrides the block default. For blocks whose mode\ntoggle is hidden (<code>\"supports\": { \"mode\": false }<\/code>) the plugin resets that\nto the block's configured mode when the post is parsed in the editor, and\nthe content self-heals on the next save. Blocks that allow toggling keep\nthe saved choice. To clean everything in one go instead:<\/p>\n\n<pre><code>wp search-replace '\"mode\":\"preview\"' '\"mode\":\"edit\"' wp_posts --include-columns=post_content\n<\/code><\/pre>\n\n<p><strong>Updates<\/strong><\/p>\n\n<p>Updates are delivered through the WordPress.org plugin directory like any\nother plugin. Updates do not apply when the file is run as a must-use\nplugin.<\/p>\n\n<p><strong>When to remove this plugin<\/strong><\/p>\n\n<p>This is a compatibility shim, not a permanent architecture. Remove it once\nACF PRO supports field editing inside the iframed canvas \u2014 check the ACF\nchangelog before major WordPress upgrades. After any WordPress core\nupdate, open a post in the editor and confirm blocks still show inline\nforms; if the fail-safe has kicked in they will show previews again, and\nthe plugin needs a new patch pattern for that WordPress version.<\/p>\n\n<p><strong>Disabling programmatically<\/strong><\/p>\n\n<pre><code>add_filter( 'tts_inline_canvas_enabled', '__return_false' );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>twoten-inline-canvas-for-acf-blocks<\/code> folder to <code>\/wp-content\/plugins\/<\/code>,\nor upload the ZIP via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate it. There are no settings.<\/li>\n<\/ol>\n\n<p>To run it as a must-use plugin instead (always on, cannot be deactivated\nfrom the dashboard), copy <code>twoten-inline-canvas-for-acf-blocks.php<\/code> into\n    wp-content\/mu-plugins\/. The file is fully standalone. Do not run both\nthe normal and mu-plugin variants on the same site.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20modify%20wordpress%20core%3F\"><h3>Does this modify WordPress core?<\/h3><\/dt>\n<dd><p>No. Core files are untouched; the plugin serves an alternative copy of one\nJavaScript bundle from the uploads directory, only on post edit screens.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20wordpress%20updates%3F\"><h3>What happens when WordPress updates?<\/h3><\/dt>\n<dd><p>The patched bundle regenerates automatically for the new version. If the\nnew version has changed the relevant code, the plugin falls back to stock\nbehaviour (iframed canvas, ACF preview mode) rather than breaking the\neditor \u2014 so glance at the block editor after each core update.<\/p><\/dd>\n<dt id=\"why%20do%20my%20blocks%20still%20show%20previews%20in%20the%20sidebar%20style%3F\"><h3>Why do my blocks still show previews in the sidebar style?<\/h3><\/dt>\n<dd><p>Check that the blocks are ACF Blocks v2 with <code>\"mode\": \"edit\"<\/code> (see Block\nrequirements). If a block allows toggling mode, a saved <code>\"mode\":\"preview\"<\/code>\nattribute is respected; hide the toggle with <code>\"supports\": { \"mode\": false }<\/code>\nto have the plugin reset it, or run the search-replace above.<\/p><\/dd>\n<dt id=\"my%20blocks%20show%20a%20card%20with%20an%20%22edit%20block%22%20button%20instead%20of%20fields\"><h3>My blocks show a card with an \"Edit Block\" button instead of fields<\/h3><\/dt>\n<dd><p>That is ACF's block v3 rendering. Since ACF PRO 6.8, blocks registered via\n    block.json default to v3 on WordPress 7.1+. Version 1.2.0 of this plugin\npins the default back to v2; if you still see it, check the block's\n    block.json for an explicit <code>\"blockVersion\": 3<\/code>, or for another plugin\nor theme hooking <code>acf\/blocks\/default_block_version<\/code> at a later priority.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20free%20version%20of%20acf%3F\"><h3>Does this work with the free version of ACF?<\/h3><\/dt>\n<dd><p>Yes, wherever free ACF renders blocks with inline edit forms the same fix\napplies \u2014 but the plugin was built for and tested against ACF PRO blocks.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%20cleanly%3F\"><h3>How do I uninstall cleanly?<\/h3><\/dt>\n<dd><p>Deactivate and delete the plugin from the Plugins screen. Uninstalling\nremoves the generated bundle copies from\n    wp-content\/uploads\/twoten-inline-canvas\/. The plugin stores no options\nand no database data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Now distributed via the WordPress.org plugin directory. The GitHub\nrelease updater and <code>Update URI<\/code> header are removed; updates arrive\nfrom WordPress.org from this version onward. No functional changes to\nthe editor canvas, block-version pin, or mode reset.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix the plugin header version. The v1.3.0 release was tagged before the\nheader was bumped, so it reported 1.2.0 and would have re-offered itself\nas an update forever.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Reset stale <code>\"mode\":\"preview\"<\/code> attributes on blocks whose mode toggle\nis hidden, via the <code>blocks.getBlockAttributes<\/code> parser filter on post edit\nscreens. Content self-heals on the next save; no database edit needed.<\/li>\n<li>Update from GitHub releases via the core <code>Update URI<\/code> mechanism, with a\n\"Check for updates\" link on the plugin row. Releases ship a clean ZIP\nbuilt by GitHub Actions.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Pin ACF block version to 2 for <code>block.json<\/code> blocks. ACF PRO 6.8+\ndefaults them to v3 on WordPress 7.1+, which always renders a preview\nwith an \"Edit Block\" modal \u2014 so the inline canvas alone no longer\nrestored inline fields. Explicit <code>\"blockVersion\"<\/code> values and\nPHP-registered blocks are left untouched; the <code>tts_inline_canvas_enabled<\/code>\nkill switch also disables this.<\/li>\n<li>Correct the plugin header version (1.1.0 still reported 1.0.0).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Rename to \"TwoTen Inline Canvas for ACF Blocks\" and prepare for the\nWordPress.org plugin directory. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: one-token <code>shouldIframe<\/code> patch, scoped to post edit\nscreens, keyed to core version with exactly-once fail-safe.<\/li>\n<\/ul>","raw_excerpt":"Restores the non-iframed block editor canvas on WordPress 7.1+ so ACF PRO blocks render their field forms inline in the canvas (edit mode).","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358027"}],"author":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/carmex"}],"wp:attachment":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358027"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358027"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358027"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358027"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358027"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}