{"id":377768,"date":"2026-09-30T05:08:18","date_gmt":"2026-09-30T05:08:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/make-html-editable\/"},"modified":"2026-10-01T01:31:11","modified_gmt":"2026-10-01T01:31:11","slug":"konrads-editable-html","status":"publish","type":"plugin","link":"https:\/\/wol.wordpress.org\/plugins\/konrads-editable-html\/","author":6713295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.1.2","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Konrad's Editable HTML","header_author":"Konrad Sroka","header_description":"Make your custom HTML client-editable in one click. Your layout stays exactly as built. No React, no npm, no build step.","assets_banners_color":"a39090","last_updated":"2026-10-01 01:31:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/konradbuilds\/konrads-editable-html","header_author_uri":"https:\/\/konradbuilds.github.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":109,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"konradS","date":"2026-09-30 05:07:46","revision":3720337},"0.2.0":{"tag":"0.2.0","author":"konradS","date":"2026-09-30 21:43:01","revision":3722073},"0.3.0":{"tag":"0.3.0","author":"konradS","date":"2026-09-30 22:34:29","revision":3722137},"0.4.0":{"tag":"0.4.0","author":"konradS","date":"2026-10-01 01:31:11","revision":3722266}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3722046,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3722046,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3722046,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3722046,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3722046,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"konrads-editable-html\/editable-html":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"konrads-editable-html\/editable-html","version":"0.4.0","title":"Editable HTML","category":"design","icon":"editor-code","description":"Your own HTML section. Text, links, images and lists stay editable. Everything else stays exactly as you wrote it.","keywords":["html","code","section","custom","paste"],"textdomain":"konrads-editable-html","attributes":{"content":{"type":"string","source":"raw","role":"content"},"fields":{"type":"array","default":[]},"htmlLocked":{"type":"boolean","default":false}},"supports":{"className":false,"customClassName":false,"html":false},"example":{"attributes":{"content":"<section style=\"padding:2rem;background:#111827;color:#f9fafb;font-family:system-ui,sans-serif\"><h2 style=\"margin:0 0 .5rem\">Your own design<\/h2><p style=\"margin:0\">Click the text to change it.<\/p><\/section>","fields":[{"path":"0\/0","kind":"text","label":"Heading"},{"path":"0\/1","kind":"text","label":"Text"}]}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css"}},"tagged_versions":["0.1.0","0.2.0","0.3.0","0.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[4121,5554,12899,18850,4516],"plugin_category":[43],"plugin_contributors":[82168],"plugin_business_model":[],"class_list":["post-377768","plugin","type-plugin","status-publish","hentry","plugin_tags-blocks","plugin_tags-custom-html","plugin_tags-editable","plugin_tags-patterns","plugin_tags-templates","plugin_category-customization","plugin_contributors-konrads","plugin_committers-konrads"],"banners":{"banner":"https:\/\/ps.w.org\/konrads-editable-html\/assets\/banner-772x250.png?rev=3722046","banner_2x":"https:\/\/ps.w.org\/konrads-editable-html\/assets\/banner-1544x500.png?rev=3722046","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/konrads-editable-html\/assets\/icon.svg?rev=3722046","icon":"https:\/\/ps.w.org\/konrads-editable-html\/assets\/icon.svg?rev=3722046","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Your custom HTML and page template parts, client-editable in one click.<\/strong><\/p>\n\n<p>Your templates are full of sections clients can't touch. The hero, the intro block, the call to action - all sitting in PHP, so every small text change means a message to you. Move them out, one at a time.<\/p>\n\n<p>Your layout stays exactly as you built it. Clients change only the parts you chose.<\/p>\n\n<p>Built on core blocks. Deactivate the plugin - your content stays. On 7.1+, it even stays editable.<\/p>\n\n<h4>Two ways to use it<\/h4>\n\n<p><strong>1. A section on a page<\/strong><\/p>\n\n<ol>\n<li>Add a Custom HTML block and paste your section, <code>&lt;style&gt;<\/code> included.<\/li>\n<li>Click <strong>Make editable<\/strong> in the block toolbar.<\/li>\n<li>Tick the parts clients may change.<\/li>\n<li>Click <strong>Lock HTML<\/strong> before you hand the site over.<\/li>\n<\/ol>\n\n<p>Clients click the text and type. Nothing else moves.<\/p>\n\n<p><strong>2. A section stuck in a PHP template<\/strong><\/p>\n\n<p>For classic and hybrid themes, where templates are PHP files.<\/p>\n\n<ol>\n<li>Go to <strong>Appearance &rarr; Patterns<\/strong> and add a new one.\nCan't see Patterns in your backend? Scroll down for tips.<\/li>\n<li>Add a Custom HTML block and paste the markup from your template.<\/li>\n<li>Click <strong>Make editable<\/strong>, tick the parts, lock the HTML.<\/li>\n<li>Save. Then open <strong>Use in a template<\/strong> in the sidebar and click <strong>Copy code<\/strong>.<\/li>\n<li>Paste that code into your template, in place of the old markup.<\/li>\n<\/ol>\n\n<p>The section looks exactly the same, and clients edit it under Patterns instead of messaging you.<\/p>\n\n<p>The code you get is core WordPress - <code>get_page_by_path()<\/code> and <code>do_blocks()<\/code>, nothing of this plugin. It finds the pattern by slug, not by ID, so it survives a move from staging to live. Deactivate the plugin and the template keeps working.<\/p>\n\n<h4>Can't find the Patterns screen?<\/h4>\n\n<ul>\n<li>It lives at <code>\/wp-admin\/edit.php?post_type=wp_block<\/code>. That is the screen this plugin works on.<\/li>\n<li>On a block theme, <strong>Appearance &rarr; Patterns<\/strong> opens the site editor instead. Use the address above.<\/li>\n<li>The menu needs the <code>edit_theme_options<\/code> capability. Editors and authors don't have it.<\/li>\n<li>Or start in the post editor: select your blocks, open the options menu, choose <strong>Create pattern<\/strong>.<\/li>\n<\/ul>\n\n<p>The plugin's <strong>How to use<\/strong> page links straight there. Find it next to Activate and Deactivate on your Plugins screen.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>One click.<\/strong> Select your Custom HTML block, click <strong>Make editable<\/strong>.<\/li>\n<li><strong>Your layout, untouched.<\/strong> The markup and CSS stay exactly as you wrote them.<\/li>\n<li><strong>You pick what's editable.<\/strong> Headings, paragraphs, links, images, lists - tick what clients may change.<\/li>\n<li><strong>Use it in a PHP template.<\/strong> One line of core PHP, copied for you.<\/li>\n<li><strong>Core blocks on WordPress 7.1+.<\/strong> Plain WordPress, no plugin needed to keep editing.<\/li>\n<li><strong>A fallback block on 6.6-7.0.<\/strong> Same result on older sites.<\/li>\n<li><strong>Examples and import.<\/strong> Start from a hero, cards, list or calculator, or import .html\/.css\/.js or a .zip.<\/li>\n<li><strong>Lock HTML.<\/strong> Freeze the setup before hand-over.<\/li>\n<li><strong>No lock-in.<\/strong> Deactivate the plugin - your pages look the same.<\/li>\n<li><strong>No React, no npm, no build step.<\/strong> Plain PHP and JavaScript you can read.<\/li>\n<\/ul>\n\n<h4>Who it's for<\/h4>\n\n<ul>\n<li><strong>Designers:<\/strong> keep your own HTML and CSS. No page builder, no React.<\/li>\n<li><strong>Freelancers:<\/strong> hand over sites clients can edit without breaking the design.<\/li>\n<li><strong>Agencies:<\/strong> turn custom sections into editable content without a block build pipeline.<\/li>\n<li><strong>Clients:<\/strong> click the text, type, save. That's it.<\/li>\n<\/ul>\n\n<h4>Native first<\/h4>\n\n<p>On WordPress 7.1 and newer, the Custom HTML block can hold editable core blocks inside static HTML. Konrad's Editable HTML finds the parts that can be edited and sets them up for you. The result is plain WordPress: headings and paragraphs are core blocks, no plugin needed to keep editing them.<\/p>\n\n<p>Every conversion is checked by WordPress's own parser first. If anything would not work, nothing is changed.<\/p>\n\n<p>On older WordPress (6.6 to 7.0), \"Make editable\" uses the plugin's lightweight Editable HTML block instead.<\/p>\n\n<h4>Make all editable<\/h4>\n\n<p>Links, images and lists can't be kept exactly by core's editable slots, so they stay fixed at first. Click <strong>Make all editable<\/strong> (in the message, or in the toolbar afterwards) and the Editable HTML block takes over:<\/p>\n\n<ul>\n<li>Text and links: type right on the page.<\/li>\n<li>Images: click to replace, alt text in the sidebar.<\/li>\n<li>Lists: move, duplicate, add and remove cards, team members or list items.<\/li>\n<li>Icons at the start of a line stay fixed; only the text is editable.<\/li>\n<li>Start with an example (hero, cards, list with icons, calculator), import files, or paste HTML.<\/li>\n<li>Import: pick your .html, .css and .js files, or a .zip (a CodePen export works). Files are read in your browser; nothing is uploaded.<\/li>\n<\/ul>\n\n<h4>You stay in control<\/h4>\n\n<ul>\n<li>Tick exactly which parts clients can change. Everything else stays fixed.<\/li>\n<li><strong>Lock HTML<\/strong> before hand-over: the setup tools disappear, so nobody changes the design by accident. Or leave it open for full flexibility.<\/li>\n<li>People who can add custom HTML (usually administrators and editors) set up blocks. Everyone who can edit the page can change the editable parts.<\/li>\n<\/ul>\n\n<h4>No lock-in<\/h4>\n\n<p>Both modes save finished HTML into the page. Deactivate or delete the plugin and your pages look exactly the same.<\/p>\n\n<h4>Try it in 5 minutes<\/h4>\n\n<p>Open the live demo in your browser, no install: <a href=\"https:\/\/playground.wordpress.net\/?blueprint-url=https:\/\/raw.githubusercontent.com\/konradbuilds\/konrads-editable-html\/main\/blueprint.json\">Try it live<\/a><\/p>\n\n<h4>Free and open source<\/h4>\n\n<p>Code, issues and ideas on <a href=\"https:\/\/github.com\/konradbuilds\/konrads-editable-html\">GitHub<\/a>. If it saves you time, a GitHub star or a review here helps others find it.<\/p>\n\n<p>Built by Konrad Sroka and Claude AI.<\/p>\n\n<p>Thanks, WordPress community.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Plugins \u2192 Add New \u2192 search for \"Konrad's Editable HTML\", or upload the zip.<\/li>\n<li>Activate.<\/li>\n<li>Select a Custom HTML block and click <strong>Make editable<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20node%2C%20npm%20or%20react%3F\"><h3>Do I need Node, npm or React?<\/h3><\/dt>\n<dd><p>No. The plugin is plain PHP and JavaScript. There is nothing to build.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20block%20theme%3F\"><h3>Do I need a block theme?<\/h3><\/dt>\n<dd><p>No. It works with classic and block themes, anywhere the block editor works.<\/p><\/dd>\n<dt id=\"does%20my%20javascript%20run%20in%20the%20editor%3F\"><h3>Does my JavaScript run in the editor?<\/h3><\/dt>\n<dd><p>No. Scripts in your HTML only run on the front end, like in the Custom HTML block.<\/p><\/dd>\n<dt id=\"can%20authors%20and%20contributors%20edit%20these%20blocks%3F\"><h3>Can Authors and Contributors edit these blocks?<\/h3><\/dt>\n<dd><p>They can change the editable parts. In the Editable HTML block, WordPress removes custom HTML such as <code>&lt;style&gt;<\/code> when people without the \"unfiltered_html\" capability save a page. The block warns them. Core's editable slots (WordPress 7.1+) don't have this problem for the text itself.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20css%3F\"><h3>What happens to my CSS?<\/h3><\/dt>\n<dd><p>It stays in your HTML, exactly as written. Selectors without a class (for example <code>h1 { }<\/code>) affect the whole page, so prefer class names.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Your pages look exactly the same. On WordPress 7.1+, headings and paragraphs made editable with core slots stay editable. Editable HTML blocks keep their HTML; WordPress offers to keep them as Custom HTML.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20in%20a%20theme%20template%2C%20not%20just%20on%20a%20page%3F\"><h3>Can I use this in a theme template, not just on a page?<\/h3><\/dt>\n<dd><p>Yes. Build the section as a pattern, then copy the template code from the <strong>Use in a template<\/strong> panel and paste it into your template file. The code uses core functions only.<\/p><\/dd>\n<dt id=\"does%20the%20pattern%20have%20to%20be%20synced%3F\"><h3>Does the pattern have to be synced?<\/h3><\/dt>\n<dd><p>No. A template always shows the pattern as you edit it under Patterns, synced or not. The difference only shows up inside posts: a copy of an unsynced pattern placed in a post is separate, so edits made there never reach the template. The panel says so when a pattern is unsynced.<\/p><\/dd>\n<dt id=\"the%20pattern%20looks%20plain%20in%20the%20editor\"><h3>The pattern looks plain in the editor<\/h3><\/dt>\n<dd><p>Your theme's CSS is not loaded there. Classic themes need <code>add_editor_style( 'style.css' );<\/code> in <code>functions.php<\/code>. Block themes load their styles already.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>New: the template code now also appears in the sidebar when a pattern is selected inside a post, so the loop finishes without leaving the editor.<\/li>\n<li>New: a short line on the Editable HTML block pointing at core's Create pattern action.<\/li>\n<li>New: activation opens the \"How to use\" page once, with a shortcut to create your first pattern.<\/li>\n<li>The \"How to use\" page: clearer layout and icons.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: a \"How to use\" page with both workflows side by side, linked from the plugin row on the Plugins screen.<\/li>\n<li>New: a one-time notice after activation, with a link to that page.<\/li>\n<li>The page links straight to the pattern screen, including on block themes where the menu opens the site editor instead.<\/li>\n<li>Readme rewritten around the two ways to use the plugin.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: <strong>Use in a template<\/strong> panel in the pattern editor. Copy one line of core PHP and render the pattern from a theme template.<\/li>\n<li>New: a note when the pattern is not synced, so nobody expects edits made inside a post to reach the template.<\/li>\n<li>New: a hint when the theme loads no editor styles.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>WordPress 7.1+: \"Make editable\" turns headings and paragraphs into WordPress's own editable slots.<\/li>\n<li>\"Make all editable\": the Editable HTML block for links, images and lists.<\/li>\n<li>Older WordPress (6.6+): the Editable HTML block right away.<\/li>\n<li>Examples, file and .zip import, Lock HTML, alt text check.<\/li>\n<\/ul>","raw_excerpt":"HTML or page template section to editable block in 1 click. Paste one line back and clients can edit the text. No React, no npm, no build.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=377768"}],"author":[{"embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/konrads"}],"wp:attachment":[{"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377768"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377768"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377768"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377768"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377768"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wol.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}