40,000+
September 18, 2026
August 11, 2020
Easily create dynamic content in WordPress that will increase conversions, enhance the user experience, and improve your workflow.
With this no-code solution, control which blocks are visible on your website and who can see them. Schedule content to show or hide at a specific time. Display exclusive promotions to your customers or members. Restrict blocks to specific user roles, screen sizes, query strings, WooCommerce products, EDD downloads, ACF fields, WP Fusion tags, and more.
Block Visibility is built exclusively for the WordPress Editor (Gutenberg) and is designed to work with any WordPress block. This includes blocks natively provided by WordPress, third-party blocks, and even block-based widgets.
Work directly in the WordPress Editor with blocks you’re already familiar with. There is no external editor or new interface to learn. In seconds, you can transform static blocks into conditional and personalized content.
It takes just 3 simple steps:
Visibility Controls determine whether a block should be visible to users on the front end of your website. Features include:
PLUS: Powerful Settings allow you to customize Block Visibility to your needs or those of your clients.
While there are countless applications for conditional blocks, here are a few examples to get you started:
1. Easy to Use
Block Visibility is the easiest way to create conditional blocks in WordPress. All with no code and just a few clicks!
2. A Balance of Power and Simplicity
Block Visibility is for you whether you’re building a sophisticated time-based promotional campaign for your customers or need to hide a few blocks on mobile. Don’t need certain functionality? Toggle it off in the plugin settings.
3. Helpful Support and Continuous Development
Block Visibility is designed, developed, and supported by Nick Diego with contributions from the broader Block Visibility community. Have an idea for additional block logic? Let us know in the plugin support forum.
For an unbiased review, the plugin was featured on WordPress Tavern.
Block Visibility is designed to work with any block and is tested with these top block libraries and plugins.
Compatibility + Direct Integration
Stay up-to-date on Block Visibility using the links below. The plugin is also being developed transparently on GitHub, so give it a star and follow along! 😉
Block Visibility is a powerful yet simple plugin that gives marketing agencies, bloggers, eCommerce websites, and small business owners the power to conditionally show or hide blocks on their websites. The need to hide Gutenberg blocks varies. Whether you need to restrict content to specific users like members or launch a promotional campaign at a particular time with block scheduling, the applications are endless.
If you need dynamic content control on your WordPress website, you need Block Visibility.
Yes! However, not all block types are enabled by default. Controls are only provided to blocks that can be added directly to a page/post by the block inserter. Therefore, some specialized blocks, such as child blocks, are not included by default. An example is the individual Column block that is part of the larger Columns block.
That said, you can enable Full Control Mode in the plugin settings. This setting removes all restrictions and adds conditional visibility controls to every block. You probably will not need Full Control Mode in most cases, but it is there if you do!
Furthermore, while this plugin is designed to be compatible with all blocks, the WordPress ecosystem is ever-expanding. If you find a conflict with a specific block, please let us know in the plugin support forum, and we will investigate. We are committed to bringing visibility block controls to every Gutenberg block.
Yup, this plugin is not theme-specific. You just need to run the latest WordPress version and use a theme that supports the block Editor. This plugin provides zero functionality to the Classic Editor.
Yes, and if you have a specific idea of what you would like to see, please submit a feature request in the plugin support forum on WordPress.org.
As of version 1.4.0, Block Visibility is supported in the Site Editor, which is available when using a block theme. We are committed to ensuring 100% compatibility with all Full Site Editing features. Please let us know in the plugin support forum if you find bugs or compatibility issues.
No. Block Visibility is designed specifically for the WordPress block Editor and, therefore, does not work on pages that the Elementor editor or another page builder controls. So long as you edit native WordPress “block” content, Block Visibility will work.
Visibility is controlled primarily on the server, so if a block should be hidden based on the set block controls, it will not even be rendered. This functionality ensures the plugin does not load any additional resources on the front end of your site, thereby optimizing performance.
The one exception to this is the Screen Size block controls. Visibility by screen size requires the use of CSS. This CSS is loaded to the front end of your site if, and only if, these controls are enabled. You can opt to disable this CSS and add the necessary styles yourself. Visit the plugin Knowledge Base to learn more.
Fixed
Changed
Fixed
Fixed
Changed
Fixed
Added
Changed
render_block callback function to only fetch plugin settings if a block has visibility conditions set. get_file_data().Fixed
Changed
PluginMoreMenuItem slot usage to support unified slots in 6.6 and ensure backward compatibility.Fixed
useCommand import now that 6.4 is the minimum version.Added
Changed
visibility_preset post type.__experimentalGetSettings function with the stable __getSettings version.Fixed
enqueue_block_assets.Added
Changed
Removed
Fixed
Added
Changed
Fixed
Fixed
Added
Changed
getEntityRecord (#77).Fixed
hide_on_restricted_users variable (#64).Fixed
Changed
blockVisibility.contextualIndicatorClasses filter to include more variables, which allows for more customization.Fixed
Removed
Fixed
Fixed
Added
ControlSetControls- and ControlSetControlsIntegrations- slots for adding visibility control editor UI elements.PluginSettings slot for adding additional plugin settings.VisibilityControls, VisibilityControlsGeneral, and VisibilityControlsIntegrations slots for adding additional visibility control settings.blockVisibility.globallyRestrictedBlockTypes and blockVisibility.widgetAreaRestrictedBlockTypes filters to restrict visibility controls on specific block types.Changed
enqueue_block_editor_assets, and previous workarounds have been removed.ControlSetControlsBottom- slot, use ControlSetControlsIntegrations- instead.VisibilityControlsIntegrationsBottom slot, use VisibilityControlsIntegrations instead.Removed
blockVisibility.addControlSetModals and blockVisibility.addControlSetOptions filters.ControlSetControlsTop- and ControlSetControlsMiddle- slots.PluginSettingsEditorTop and PluginSettingsEditorTop slots.PluginSettingsTop, PluginSettingsMiddle, and PluginSettingsBottom slots.VisibilityControlsTop, VisibilityControlsMiddle, and VisibilityControlsBottom slots.VisibilityControlsIntegrationsTop and VisibilityControlsIntegrationsBottom slots.RuleSetOptionsTop, RuleSetOptionsMiddle, RuleSetOptionsBottom, and RuleSetMoreSettingsTools slots.block_visibility_frontend_test_date_time_schedule filter.VisibilityControlsDateTimeTop and VisibilityControlsDateTimeBottom slots.DateTimeScheduleToolbar- and DateTimeScheduleControlsTop-, and DateTimeScheduleControlsBottom- slots.ScheduleOptionsTools, ScheduleOptionsMiddle, and ScheduleOptionsBottom slots.ScreenSizeControls slot.VisibilityByRoleControls slot.Added
Changed
Removed
Fixed
Changed
Fixed
Fixed
Fixed
Changed
Fixed
Upgrade Notice
Block Visibility now requires WordPress 6.0+ with version 2.5.0 and users of the Pro add-on will need to upgrade to Pro 1.6.0 to take advantage of these latest enhancements. There have also been updates to the way visibility defaults work. Check out the release article for more information.
Added
Changed
Removed
Fixed
meow-gallery/gallery block. Added better error handling to avoid a similar issue in other third-party blocks.Fixed
Fixed
Changed
Fixed
Fixed
Changed
Fixed
Added
Changed
Fixed
Fixed
Added
Changed
Fixed
Added
Changed
Removed
Changed
Fixed
null when a block is hidden. An empty string is now returned instead. Thanks Ted for discovering this issue and opening a support ticket!Added
Changed
Fixed
Added
Changed
Removed
Fixed
Added
Changed
--wp-admin-theme-color and indicators have been moved to the ::after pseudo element for improved block compatibility.Removed
Fixed
Added
Fixed
Added
Changed
Removed
Fixed
Added
Changed
Removed
enable_scheduling setting. Users can now easily toggle visibility controls at the block level so this setting is not longer needed. The entire Date & Time control can still be enabled/disabled in the Visibility Control settings.startDateTime and endDateTime properties that were deprecated in version 1.4.1. Frontend visibility tests for these properties are still operational, but will likely be removed in version 2.0.Fixed
Fixed
Added
react-select as a project dependency for all multi-select fields.Changed
react-select for a cleaner user interface.Fixed
wp-json/wp/v2/.... This is now fixed. Thanks @tkraftner for reporting this.Added
Changed
Removed
hide-control-section.js and corresponding function are no longer needed.Fixed
Added
Fixed
Fixed
get_current_user_role() so no errors are thrown when WordPress installed in a subdirectory.Added
Changed
Removed
Fixed
Fixed
Fixed
Added
blockVisibility “supports” variable to all blocks types that have visibility enabled. This provide a more consistent method for detecting whether a block should have visibility controls or not.Changed
Deprecated
startDateTime and endDateTime properties of the blockVisibility attribute have been deprecated. All new blocks will use the new scheduling property.Removed
Fixed
Upgrade Warning
For the long-term maintainability of the Block Visibility plugin, changes to the underlying file structure were needed in version 1.4.0. Therefore, when you upgrade from version 1.3.0 or lower, the plugin will deactivate and you will receive an error message. But don’t worry, simply re-activate Block Visibility and you are good to go.
This is an unfortunate issue that will occur only once. We apologize for any inconvenience that this causes, but trust that this change better positions the plugin for many exciting enhancements in the future!
Added
Changed
block-visibility.php and the setup class has been movedRemoved
Added
Changed
Fixed
Added
Added
Fixed
| Version | Download | Type |
|---|---|---|
| 3.8.1 | Download | Stable |
| 3.8.0 | Download | Stable |
| 3.7.1 | Download | Stable |
| 3.7.0 | Download | Stable |
| 3.6.1 | Download | Stable |
| 3.6.0 | Download | Stable |
| 3.5.0 | Download | Stable |
| 3.4.0 | Download | Stable |
| 3.3.0 | Download | Stable |
| 3.2.0 | Download | Stable |
| 3.1.2 | Download | Stable |
| 3.1.1 | Download | Stable |
| 3.1.0 | Download | Stable |
| 3.0.4 | Download | Stable |
| 3.0.3 | Download | Stable |
| 3.0.2 | Download | Stable |
| 3.0.1 | Download | Stable |
| 3.0.0 | Download | Stable |
| 2.6.0 | Download | Stable |
| 2.5.4 | Download | Stable |
| 2.5.3 | Download | Stable |
| 2.5.2 | Download | Stable |
| 2.5.1 | Download | Stable |
| 2.5.0 | Download | Stable |
| 2.4.6 | Download | Stable |
| 2.4.5 | Download | Stable |
| 2.4.4 | Download | Stable |
| 2.4.3 | Download | Stable |
| 2.4.2 | Download | Stable |
| 2.4.1 | Download | Stable |
| 2.4.0 | Download | Stable |
| 2.3.1 | Download | Stable |
| 2.3.0 | Download | Stable |
| 2.2.0 | Download | Stable |
| 2.1.2 | Download | Stable |
| 2.1.1 | Download | Stable |
| 2.1.0 | Download | Stable |
| 2.0.0 | Download | Stable |
| 1.9.1 | Download | Stable |
| 1.9.0 | Download | Stable |
| 1.8.0 | Download | Stable |
| 1.7.1 | Download | Stable |
| 1.7.0 | Download | Stable |
| 1.6.0 | Download | Stable |
| 1.5.3 | Download | Stable |
| 1.5.2 | Download | Stable |
| 1.5.1 | Download | Stable |
| 1.5.0 | Download | Stable |
| 1.4.3 | Download | Stable |
| 1.4.2 | Download | Stable |
| 1.4.1 | Download | Stable |
| 1.4.0 | Download | Stable |
| 1.3.0 | Download | Stable |
| 1.2.0 | Download | Stable |
| 1.1.0 | Download | Stable |
| 1.0.1 | Download | Stable |
| 1.0.0 | Download | Stable |
| Development | Download | Trunk |