Block Control


Have you ever used WordPress’ new block editor Gutenberg and wished for a way to influence, when and to whom blocks are shown? We’ve been in this situation, that’s why we came up with Block Control. This nifty little plugin allows you to control, whether a block should be displayed under certain circumstances or not. And that’s of course true for both WordPress’ default blocks and blocks added by third-party plugins.

You can hide blocks based on:

  • Device types (desktop, mobile)
  • Login status
  • Date (start and end date)
  • User roles
  • Page types
  • Posts of the current post type


  • Block Control settings in the block’s sidebar


  1. Upload the plugin files to the /wp-content/plugins/block-control directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress
  3. Now you can use the “Visibility” panel, Block Control adds to every block withing the Gutenberg editor.


How do I use Block Control?

After you install and activate Block Control, you will find a new panel “Visibility” added to every blocks right hand side sidebar. Open the panel to choose a condition for the display of a given block.

Conditional blocks configured this way will only be displayed under certain circumstances chosen by you. Please note, these conditions will only take effect in the front end of your site, not inside the editor itself.

Does Block Control work with page caching plugins?

As Block Control removes content completely from the source code and not just hides it via CSS, it is mostly incompatible to any caching plugin because it may generate different HTML for every user.

How to disable post type X from showing up?

Since version 1.1.0 you can hide blocks based on post type. Since you maybe have post types that don’t make sense in this context, you can use the filter block_control_ignored_post_types to remove them.

E.g. if your post type slug is called my_post_type, you can use it like this:

function my_filter_block_control_post_types( $post_types ) {
    unset( $post_types['my_post_type'];

    return $post_types;

add_filter( 'block_control_ignored_post_types', 'my_filter_block_control_post_types' );

Who are you folks?

We are, your friendly neighborhood WordPress plugin shop from southern Germany.


You can contribute to the code on GitHub.

How can I report security bugs?

You can report security bugs through the Patchstack Vulnerability Disclosure Program. The Patchstack team help validate, triage and handle any security vulnerabilities. Report a security vulnerability.


අගෝස්තු 30, 2019
Lovely helper plugin lets you select, if you need to be logged in to see a block in a post or page and whether it should be hidden on certain devices. Currently the plugin description may be a little vague (“it does what?”) but the plugin works right out of the box and may be for many a smart solution for a simple task. Well done, Matthias and Simon. 👏🏻
අගෝස්තු 28, 2019
I’ve used this plugins on two websites now. It works just great. The visibility option for different devices is very useful.
Read all 2 reviews

Contributors & Developers

“Block Control” is open source software. The following people have contributed to this plugin.


“Block Control” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Block Control” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • We fixed all variants of hide by date setting to be properly checked.


  • We fixed the hide by date setting if only one of the dates is used.


  • We fixed the hide by date setting if both settings are in the future or both are in the past.
  • We improved the settings for hide by date for better accessibility and functionality.


  • We fixed a problem with some blocks no more saving the visibility settings.


  • We fixed a problem with broken blocks after updating to version 1.1.7. The editor now doesn’t contain any classes from Block Control anymore.


  • We fixed compatibility with dynamic blocks.


  • We improved the ability to use the filter blockControl.unsupportedBlocks without needing to load the own JavaScript early.


  • We added a filter blockControl.unsupportedBlocks to filter the list of unsupported blocks.
  • We disabled Block Control for the SimpleTOC block in order to display it properly in the backend.


  • We disabled Block Control for the Polylang language switcher in order to display it properly in the backend.


  • We added full support for WordPress 6.1 (replaced a deprecated function).


  • We fixed a potential error in blocks in the widget area.


  • We fixed a dependency problem, which may result in preventing the settings panel to appear.


  • Since the originally planned Pro version will never be completed, we decided to merge its code into the free version of Block Control.
  • Hide blocks based on roles
  • Hide blocks based on dates
  • Hide blocks based on page types (is_home, is_page, etc.)
  • Hide blocks based on posts of the current post type (useful especially for reusable blocks)


  • We fixed a problem with assets loading in the backend


  • We fixed a problem while checking for block attributes


  • We fixed a problem that may load multiple editor scripts in the frontend even if they are not needed there
  • We fixed a problem where Block Control options won’t be available for certain blocks


  • We fixed the internationalization for all strings


  • Initial release