# Custom Block Builder - Lazy Blocks * Contributors: nko * Tags: gutenberg, blocks, custom, meta, fields * Donate link: https://www.lazyblocks.com/pro/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=donate * Requires at least: 6.2 * Tested up to: 7.0 * Requires PHP: 8.0 * Stable tag: 4.3.0 * License: GPLv2 or later * License URI: Easily create custom blocks and custom meta fields for Gutenberg without hard coding. ## Description **Custom Blocks Plugin For WordPress** ★★★★★
**Developers magic wand for WordPress custom blocks.** We created [**Lazy Blocks WordPress plugin**](https://www.lazyblocks.com/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=head), to help every developer get access to the powerful tools they need to quickly run websites based on WordPress block editor (called Gutenberg). [Official Site](https://www.lazyblocks.com/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=head) | [Documentation](https://www.lazyblocks.com/docs/overview/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=head) | [GitHub](https://github.com/nk-crew/lazy-blocks) Create custom blocks visually, add controls to your blocks using drag & drop, write blocks output using HTML or PHP code. You can create custom blocks as well as custom meta fields for specific post types. Furthermore, you are able to create post templates with predefined blocks for any post type. ### 🚀 Easy To Start This everything you need to deploy your custom block in WordPress editor: **1. Configure Custom Block**
Give a name to your custom block, set icon, category, etc. **2. Add Controls**
Add control fields like simple text and complex image selectors. **3. Write Output Code**
Output code for your custom block with HTML and PHP support. ### 🌟 Features * Custom blocks with output code * Custom blocks for posts meta fields * Large set of predefined controls * Show controls in block content / inspector * Multiple output methods allowed * Custom PHP * Custom HTML + Handlebars * Template files in theme folder * Export / Import blocks ### 🔥 Controls To manage custom blocks attributes you need to use Controls. Lazy Blocks have a large set of controls predefined for you: * Basic * Text * Textarea * Number * Range * URL * Email * Password * Content * Image * Gallery * File * Rich Text * Classic Editor * Code Editor * Inner Blocks * Choice * Select * Radio * Checkbox * Toggle * Advanced * Color Picker * Date Time Picker * Layout * Repeater * Custom Controls [read our extensive documentation](https://www.lazyblocks.com/docs/examples/create-custom-control/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=custom_controls) ### 🏳️ Multilingual Lazy Blocks adds a new layer of compatibility for [WPML](https://wpml.org/). All text controls of custom blocks are compatible with WPML and ready for translation. [https://www.lazyblocks.com/docs/multilingual/](https://www.lazyblocks.com/docs/multilingual/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=wpml) ### 🛠 Built For Developers Lazy Blocks built by developers, for developers and gives you unlimited freedom to create custom blocks. Furthermore, there are PHP filters and actions to customize every part of your custom blocks from the backend. Possibility to use PHP and theme templates system. Every UI part should be intuitive for simple custom blocks, but if you want to create something more complex, you may be required to [read our extensive documentation](https://www.lazyblocks.com/docs/overview/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=developers). ### 🔥 Lazy Blocks Pro > The Lazy Blocks plugin is also available in a professional version which includes more controls and features! [**Learn more about Lazy Blocks Pro**](https://www.lazyblocks.com/pro/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=pro) > > In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. The Pro version allows you to: * **Additional Controls** * **Posts** - Search and select posts based on post type or taxonomy * **Taxonomy** - Search and select categories, tags and any other custom taxonomies * **Users** - Search and select users based on user roles * **Units** - Advanced number input with possibility to select any CSS unit * **Message** - Display a helpful message between controls * **Code Editor** - Insert code parts using editor with syntax highlighting * **Controls Conditions** Conditionally display/hide controls. In order not to overload your block with a huge list of controls, you can hide some of them depending on the values of other controls. * **Styles & Scripts** Add custom CSS and JavaScript to your blocks. Define styles for editor and frontend, and script for interactive frontend functionality. Assets are automatically loaded only when needed for optimal performance. * **Panels and Dividers** The Panels and Dividers provides a way to structure controls into groups. It assists in better organizing the block panel UI. * **Blocks Preloading** Display blocks preview immediately once the page editor loaded. * **SEO Enhancements** Additional support for content analysis in Rank Math and Yoast SEO plugins. [**Find much more custom blocks features of Lazy Blocks Pro today!**](https://www.lazyblocks.com/pro/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=pro) ## Installation ### Automatic installation Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of Lazy Blocks, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New. In the search field type “Lazy Blocks” and click Search Plugins. Once you’ve found our plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”. ### Manual installation The manual installation method involves downloading our Lazy Blocks plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains [instructions on how to do this here](https://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation). ## Screenshots 1. Custom block example in Block Builder UI 2. Custom block example in WordPress editor 3. Available block controls ## Changelog = 4.3.0 - May 4, 2026 = * added compatibility for WordPress 7.0 * added support Groups **Content** and **List** groups for controls in Inspector * fixed Checkbox with multiple options and **Save in Meta** error * fixed possible vulnerability - stronger checks on who can change block code (editor, front-end output, and scripts), so permissions are respected even if something tries to update block meta outside the normal editor * fixed displaying unfinished block drafts with an empty slug * minor fixes and changes = 4.2.1 - Feb 4, 2026 = * fixed context-aware capability check for PHP block rendering (resolves XSS) = 4.2.0 - Dec 3, 2025 = * added caching for the get_blocks() function to prevent loading block custom posts on every page load. This fixes the issue with heavy SQL calls on sites using a large number of blocks (20+) * fixed URL control inside the 'content' placement. Since you asked to keep it working in Content, we restored the control here and now display settings in a Modal - this is a workaround for Gutenberg limitations with URL components inside iframe preview * fixed required control check and post locking when a block is rendered inside a preview example * **Pro:** * added Link control: * added Token Field control: * added Token Field appearance for Taxonomy control * fixed incorrect path display for theme template code folder for blocks with custom namespace = 4.1.1 - Sep 25, 2025 = * security fix: prevent unauthorized block export access * added `$content` attribute to `lzb/block_render/output` filters * **Pro:** * fixed rendering blocks in widgets screen when Rank Math is active = 4.1.0 - Aug 18, 2025 = * !breaking change - in Theme Templates renamed `$context` to `$render_location` to use `$context` for Gutenberg blocks Context feature instead: * requires PHP version 8.0 or higher, with version 8.3 and above recommended * added JS filter for devs: `lzb.registerBlockType.args` * added PHP filters for devs: `lzb/register_blocks`, `lzb/get_blocks` * fixed content wrapper controls color inheritance from parent * fixed losing focus from input fields in the inspector controls when block render preview updated * fixed URL control rendering in Content - display fallback Text control * disable possibility to add URL control inside Repeater inserted inside Content * remove child controls when the repeater control removed * minor fixes * **Pro:** * added support for block relations and context * improved block content retrieval for SEO plugins to enable accurate analysis and added preload to prevent multiple fetches on editor page load. Learn more -> = 4.0.3 - Jul 7, 2025 = * **Pro:** * fixed incorrect displaying controls in inspector inside different groups = 4.0.2 - Jun 26, 2025 = * fixed displaying block border in editor when used repeater in inspector = 4.0.1 - Jun 4, 2025 = * restored `lzb/block_render/allow_wrapper` filter to prevent existing user blocks from breaking, but we now deprecate this hook and display a notice to migrate to the useBlockProps attribute * **Pro:** * fixed updater caching issue that sometimes caused Forbidden errors = 4.0.0 - Jun 2, 2025 = * deprecated Templates feature. You need to migrate to the WordPress FSE theme and use Template editor natively. Learn more -> [https://wordpress.org/documentation/article/template-editor/](https://wordpress.org/documentation/article/template-editor/). Our implementation will still work for existing sites, but it is deprecated for future use. * improved Block Builder UI and reworked some option names and placement * added possibility to control the block wrapper and remove the block border from the editor * added setup wizard with predefined blocks for quick start your custom blocks * added more Supports options: color, layout, shadow, spacing, dimensions, typography * added `lzb/register_block_type_data` filter to override block registration data * removed `lzb/block_render/allow_wrapper` PHP filter, because user can now provide their own wrapper in block code * rename "Styles" to "Style Variations" to prevent collision with block custom CSS options * fixed saving Ghost Kit supports settings * fixed duplicated block IDs after duplicating 2 and more blocks at once * fixed URL control size in Inspector * fixed block render if output is '0' string * fixed block attribute display in the block builder preview * fixed render context when inside block builder preview * minor fixes and improvements * **Pro** * added possibility to add Styles and Scripts for your block * added support for Posts Statuses in Posts control settings * added support for Meta controls in conditional logic * added in SEO plugins proper handling of blocks content, which does not have Editor code output but only Frontend * display options in posts and users controls by default when no search text added * removed Native Blocks Style feature in favour of use `useBlockProps` attribute * fixed default value in multiple Posts, Taxonomy and Users controls * fixed SEO plugins don't count blocks content length * fixed $wpdb->prepare syntax error in Maria DB = 3.8.3 - Dec 21, 2024 = * fixed XSS issue in admin blocks list page = 3.8.2 - Dec 13, 2024 = * **Pro** * fixed automatic plugins update. In case you can't automatically update plugin, install it manually https://www.lazyblocks.com/docs/account-and-license/download-lazy-blocks-pro-plugin/ = 3.8.1 - Dec 10, 2024 = * remove experimental notice under WPML setting * minor changes in readme * **Pro**: * fixed block crash when conditional logic added to the control which is no longer exists = 3.8.0 - Dec 7, 2024 = * added WordPress 6.7 compatibility * added better error messages to block Inspector and to the editor toolbar when block has invalid required controls * added prompt to remove metadata from post after removing block which contains the control with Save in Meta option enabled * added possibility to clear the Gallery control * added duplicate row button to Repeater control * added `wp_get_attachment_image` Handlebars helper * added possibility to activate/deactivate blocks * added support for embed links to the Classic Editor control * added Groups for Inspector - Default, Styles and Advanced * added reset button to Time control * added Multiple option support for Checkbox control * improved Repeater control UI * improved block duplication process - add copy suffix and disabled block by default * improved control with Save in Meta displaying in the editor of post, which does not support custom fields * fixed invalid block builder render when there are no blocks registered * fixed offsetHeight JS error in block builder preview * fixed hardcoded `wp-content` string in the block builder UI: changed to wp content dir core constant * fixed displaying default block icon in blocks list admin UI * fixed saving of Repeater row addition and removal in undo/redo manager * fixed align class rendering in block when align attribute is disabled * prevent changing block post statuses - support only draft and publish * rename Constructor to Block Builder * removed advanced validation from the URL control to prevent required check fails on relative links or links to applications * removed the ability to use URL control within Content, since the Gutenberg no longer renders it correctly here * **Pro:** * added possibility to change block slug Namespace and register Collection * fixed block editor styles for Code control extension * migrate Pro plugin from Paddle to LemonSqueezy = 3.7.0 - May 23, 2024 = * improved Required control options - added more validation checks and better error messages * fixed Classic control loading in legacy Widgets screen * fixed Number/Range controls default value `0` when it is not selected * changed `lzb.editor.control.isValueValid` hook to `lzb.editor.control.validate` * removed Multiline option from RichText control as it is deprecated = 3.6.2 - May 1, 2024 = * added error handler to prevent block from breaking in editor when there are invalid HTML in block output * fixed get_meta_value_by_block method to not crash if no meta available = 3.6.1 - Mar 21, 2024 = * reverted the code for validating HTML as it does more harm than good. In the next update, we will need to add error handlers in JS instead of trying to validate HTML inside PHP. = 3.6.0 - Mar 15, 2024 = PRO plugin: * fixed decoding of WPML encoded strings in conditional logic in editor Free + PRO plugin: * added compatibility for the latest Gutenberg and WordPress 6.5 * added error handler for invalid HTML. The block will no longer crash, it will display the error message * added support for new Ghost Kit extensions * changed Classic control to use Modal since we can no longer use the TinyMCE inside editor iframe * fixed styles enqueue in editor iframe * fixed adding default toggle/checkbox value in the new repeater row * fixed `react-select` styles render inside editor iframe * fixed `react-select` removing items by clicking on X button * fixed decoding of WPML encoded strings in repeater, gallery, file and image controls in editor * fixed displaying Navigation and Patterns in block Condition selector * fixed loading block control scripts in block builder when no blocks registered yet = 3.5.1 - Aug 30, 2023 = * fixed JS error in editor in block containing `